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;
    }
}