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