其他分享
首页 > 其他分享> > 一目了然——二叉树的遍历(先序,中序,后序遍历)

一目了然——二叉树的遍历(先序,中序,后序遍历)

作者:互联网

1.1什么是树:

树是一种非线性的数据结构,其形状也形似一颗树,有其唯一的根,和若干互不相交的子树。

1.2  首先我们先来了解一下树的一个主要的分支——二叉树:如下图           

                                                

1.3  二叉树的定义:

2.1二叉树的遍历:

如图箭头演示的顺序进行:

2.2 先序遍历:

先序遍历结果:A1 A2 A3 A4 A5 A6

 先序遍历二叉树的代码:(递归)

void preorder(BTNode *p) //p为遍历指针
{
  if (p != NULL)
  {
    visit(p);  //当第一次遍历该结点时,就访问操作
    preorder(p->lchild); //先序遍历左子树
    preorder(p->rchild); //先序遍历右子树
  }
}

2.3中序遍历:

                                                  中序遍历结果:A4 A2 A5 A1 A6 A3

中序遍历的代码:(递归)

​void preorder(BTNode *p) //p为遍历指针
{
  if (p != NULL)
  {
    preorder(p->lchild); //遍历左子树

    visit(p);  //当第二次遍历该结点时,就访问操作

    preorder(p->rchild); //遍历右子树
  }
}

​

​

2.4 后序遍历:

后序遍历结果:A4 A5 A2 A6 A3 A1

 后序遍历的代码:(递归)

​
​void preorder(BTNode *p) //p为遍历指针
{
  if (p != NULL)
  {
    preorder(p->lchild); //遍历左子树

    preorder(p->rchild); //遍历右子树

    visit(p);  //当第三次遍历该结点时,就访问操作
  }
}

​

​

​

标签:左子,preorder,结点,遍历,中序,二叉树,先序
来源: https://blog.csdn.net/m0_55633659/article/details/123615968