二叉树的遍历(递归)

1、思路

由于二叉树的结构本身就是递归的,所以其很多操作都可以递归的实现。比如三种遍历操作。比如对于先序遍历,我们只需要先访问其根节点,再递归的访问左右子树即可。

2、二叉树结点结构

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/

3、先序遍历

void preOrder(TreeNode *root)
{
    if(root)
    {
        cout<<root->val<<endl; //根
        preOrder(root->left); //左
        preOrder(root->right); //右
    }
}

4、中序遍历

void InOrder(TreeNode *root)
{
    if(root)
    {   
        InOrder(root->left);
        
        cout<<root->val<<endl;
        
        InOrder(root->right);
    }
}

5、后序遍历

void PostOrder(TreeNode *root)
{
    if(root)
    {   
        PostOrder(root->left);
        
        PostOrder(root->right);

        cout<<root->val<<endl;
    }
}
数据结构和算法 文章被收录于专栏

该专栏内容包含常见的数据结构和一些算法知识。若有错误请各位指正。 //里面所有代码均通过vscode调试。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务