二叉树的三种遍历方式
二叉树的三种遍历方式:
前序:根+左子树+右子树
中序:左子树+根+右子树
后序:左子树+右子树+根
递归:
1.取出先序(后序)的第一个节点。(先序中的节点为根节点)
2.用第一个节点可以将中序分成左右子树,然后又取出先序(后序)的第二个节点
再次将左右子树再次划分,
3,当将中序全部划分为单个点时就结束。
前序遍历:访问 根 -> 左子树 -> 右子树
void preorder(Treenode *p) //前序preorder 、树节点tree node
{
if (p!=NULL)
{
visit(p);
preorder(p->left);
preorder(p->right);
}
}
中序遍历:访问 左子树 -> 根 -> 右子树
void inorder(Treenode *p) //中序inorder
{
if (p!=NULL)
{
inorder(p->left);
visit(p);
inorder(p->right);
}
}
后序遍历:访问 左子树 -> 右子树 -> 根
void postorder(Treenode *p) //后序postorder
{
if (p!=NULL)
{
postorder(p->left);
postorder(p->right);
visit(p);
}
}
例如:假设一颗二叉树的先序序列是:EBADCFHGIKJ。 中序序列为:ABCDEFGHIJK。请画出该二叉树。
详情:利用利用二叉树进行排序 的代码