我是靠谱客的博主 善良橘子,最近开发中收集的这篇文章主要介绍二叉树三种遍历方式递归实现分别按照二叉树先序,中序和后序打印所有的节点。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

分别按照二叉树先序,中序和后序打印所有的节点。

先序:根左右
中序:左根右
后序:左右根

首先定义向量数组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;
}
};

最后

以上就是善良橘子为你收集整理的二叉树三种遍历方式递归实现分别按照二叉树先序,中序和后序打印所有的节点。的全部内容,希望文章能够帮你解决二叉树三种遍历方式递归实现分别按照二叉树先序,中序和后序打印所有的节点。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部