概述
分别按照二叉树先序,中序和后序打印所有的节点。
先序:根左右
中序:左根右
后序:左右根
首先定义向量数组results[3],然后调用周游函数travel,判断条件使用根节点是否为空。
周游方式使用递归实现。
先序遍历:
1.判断根节点是否为空
【if(root)】
2.非空进入循环,输出根节点
【ret[0].push_back(root->val);】
3.左子树判定,有节点进行递归输出,没节点进行下一步
【travel(root->left,ret);】
4. 右子树判定,有节点进行递归输出,没节点结束周游函数,返回主函数
【travel(root->right,ret);】
中序遍历:
1.判断根节点是否为空
【if(root)】
2.非空进入循环,左子树判定,有节点进行递归输出,没节点进行下一步
【travel(root->left,ret);】
3.输出根节点
【ret[1].push_back(root->val);】
4. 右子树判定,有节点进行递归输出,没节点结束周游函数,返回主函数
【travel(root->right,ret);】
后序遍历:
1.判断根节点是否为空
【if(root)】
2.非空进入循环,左子树判定,有节点进行递归输出,没节点进行下一步
【travel(root->left,ret);】
3.右子树判定,有节点进行递归输出,没节点进行下一步
【travel(root->right,ret);】
4. 输出根节点,结束周游函数,返回主函数
【ret[2].push_back(root->val);】
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
*/
class Solution {
public:
void travel(TreeNode *root,vector<vector<int>> &ret){
if(root){
ret[0].push_back(root->val);
travel(root->left,ret);
ret[1].push_back(root->val);
travel(root->right,ret);
ret[2].push_back(root->val);
}
}
vector<vector<int> > threeOrders(TreeNode* root) {
vector<vector<int>>results(3);
travel(root,results);
return results;
}
};
最后
以上就是善良橘子为你收集整理的二叉树三种遍历方式递归实现分别按照二叉树先序,中序和后序打印所有的节点。的全部内容,希望文章能够帮你解决二叉树三种遍历方式递归实现分别按照二叉树先序,中序和后序打印所有的节点。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复