首页 > 其他分享 >第六章 二叉树part01

第六章 二叉树part01

时间:2023-12-15 21:44:41浏览次数:35  
标签:right TreeNode val temp part01 二叉树 第六章 left Vec

第六章 二叉树**part01**

 

 

递归遍历

 

144. 二叉树的前序遍历

 

Code :

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode() : val(0), left(nullptr), right(nullptr) {}
*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
   vector<int> preorderTraversal(TreeNode* root) {

       // 数组 / 值   的   传递

       vector<int> temp_Vec ;

       if(root == NULL)
      {
           return {};

      }

       /////////////////////
       // 本 结点( 逻辑   __   父结点 所属) 处理 区域
       temp_Vec.push_back(root->val);

       ////////////////////

       vector<int> temp_Vec_LeftChild = preorderTraversal(root->left);
       vector<int> temp_Vec_RightChild = preorderTraversal(root->right);

       // 左右 子树 处理 顺序

                                           //注意 左右 子树 处理 顺序

       if(!temp_Vec_LeftChild.empty())
      {
           temp_Vec.insert(temp_Vec.end() , temp_Vec_LeftChild.begin() , temp_Vec_LeftChild.end() );

      }

       if(!temp_Vec_RightChild.empty())
      {
           temp_Vec.insert(temp_Vec.end() , temp_Vec_RightChild.begin() , temp_Vec_RightChild.end() );

      }

       return temp_Vec ;
  }
};

 

 

145. 二叉树的后序遍历

 

Code :

 

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode() : val(0), left(nullptr), right(nullptr) {}
*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
   vector<int> postorderTraversal(TreeNode* root) {

       
       // 数组 / 值   的   传递

       vector<int> temp_Vec ;

       if(root == NULL)
      {
           return {};

      }

       

       vector<int> temp_Vec_LeftChild = postorderTraversal(root->left);
       vector<int> temp_Vec_RightChild = postorderTraversal(root->right);

       // 左右 子树 处理 顺序

                                           //注意 左右 子树 处理 顺序

       if(!temp_Vec_LeftChild.empty())
      {
           temp_Vec.insert(temp_Vec.end() , temp_Vec_LeftChild.begin() , temp_Vec_LeftChild.end() );

      }

       if(!temp_Vec_RightChild.empty())
      {
           temp_Vec.insert(temp_Vec.end() , temp_Vec_RightChild.begin() , temp_Vec_RightChild.end() );

      }

       /////////////////////
       // 本 结点( 逻辑   __   父结点 所属) 处理 区域
       temp_Vec.push_back(root->val);

       ////////////////////

       return temp_Vec ;



  }
};

 

 

94. 二叉树的中序遍历

 

Code :

 

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode() : val(0), left(nullptr), right(nullptr) {}
*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
   vector<int> inorderTraversal(TreeNode* root) {

       // 数组 / 值   的   传递

       vector<int> temp_Vec ;

       if(root == NULL)
      {
           return {};

      }

       

       vector<int> temp_Vec_LeftChild = inorderTraversal(root->left);
       vector<int> temp_Vec_RightChild = inorderTraversal(root->right);

       // 左右 子树 处理 顺序

                                           //注意 左右 子树 处理 顺序

       if(!temp_Vec_LeftChild.empty())
      {
           temp_Vec.insert(temp_Vec.end() , temp_Vec_LeftChild.begin() , temp_Vec_LeftChild.end() );

      }

       /////////////////////
       // 本 结点( 逻辑   __   父结点 所属) 处理 区域
       temp_Vec.push_back(root->val);

       ////////////////////

       if(!temp_Vec_RightChild.empty())
      {
           temp_Vec.insert(temp_Vec.end() , temp_Vec_RightChild.begin() , temp_Vec_RightChild.end() );

      }

       

       return temp_Vec ;


  }
};
   

标签:right,TreeNode,val,temp,part01,二叉树,第六章,left,Vec
From: https://www.cnblogs.com/brinisky/p/17904218.html

相关文章

  • 二叉树
    二叉排序树classNode{ constructor(value){ this.value=value this.left=null this.right=null }}classTree{ constructor(){ this.root=null this.travelResult=[] } insertByFather(father,node){ if(father.value>node.value){ ......
  • 第六章 消息认证和哈希函数 —— 现代密码学(杨波)复习题
    第六章一、填空1.通信双方A和B通信,则可能发生哪两种形式的抵赖或欺骗?2.数字签名能够抵抗不可否认性攻击的原因是________________________________3.基于公钥加密的数字签名方式中,加密的消息应该是________________________4.直接方式的数字签名的公共弱点是______________......
  • 2023-2024-1学期20232316《网络空间安全导论》第六章学习总结
    第六章应用安全基础应用安全概述应用安全是什么应用安全是为保障各种应用系统在信息的获取、存储、传输和处理各个环节的安全所涉及的相关技术的总称。应用安全的核心支撑技术是密码技术。应用安全技术的基础和关键技术是系统安全技术与网络安全技术。身份认证是保障应用......
  • 第六章:应用安全基础
    ##教材学习总结思维导图:总揽全局 各个小节思维导图及简介第一节:应用安全概述简介:密码技术是核心支撑技术,系统安全技术与网络安全技术是应用安全技术的基础和关键技术*身份认证是保障应用安全的基础*访问控制是应用系统信息安全必不可少的组成部分*大数据本质上是一种方......
  • 655. 输出二叉树(中)
    目录题目题解题目给你一棵二叉树的根节点root,请你构造一个下标从0开始、大小为mxn的字符串矩阵res,用以表示树的格式化布局。构造此格式化布局矩阵需要遵循以下规则:树的高度为height,矩阵的行数m应该等于height+1。矩阵的列数n应该等于2的(height+1)次......
  • 第六节:二叉树详解
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 543. 二叉树的直径
    1.题目介绍给你一棵二叉树的根节点,返回该树的直径。二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点\(root\)。两节点之间路径的长度由它们之间边数表示。示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]......
  • 101. 对称二叉树
    1.题目介绍给你一个二叉树的根节点\(root\),检查它是否轴对称。示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false提示:树中节点数目在范围\([1,1000]\)内\(-100<=Node.val<=100\)进阶:你可以运用递归和迭代两种......
  • 226. 翻转二叉树
    1.题目介绍给你一棵二叉树的根节点\(root\),翻转这棵二叉树,并返回其根节点。示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]提示:树中节点数目范围在\([0,100]\)内\(-100<=Node.val......
  • C++堆——heap与二叉树和python
    数据结构栈-->stack队列-->queue树-->tree堆-->heap散列-->hash图-->graph图结构一般包括顶点和边邻接矩阵DAG,DirectedAcyclicGraph即「有向无环图」树树(Tree)是一种非线性的数据结构,由n个节点组成,其中每个节点都有零个或多个子节点。......