您现在的位置是:首页 >生活 > 2024-06-07 17:07:34 来源:

二叉树遍历代码(二叉树遍历)

导读 大家好,我是小夏,我来为大家解答以上问题。二叉树遍历代码,二叉树遍历很多人还不知道,现在让我们一起来看看吧!1、1.遍历方案2、 ...

大家好,我是小夏,我来为大家解答以上问题。二叉树遍历代码,二叉树遍历很多人还不知道,现在让我们一起来看看吧!

1、1.遍历方案

2、 从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:

3、 (1)访问结点本身(N),

4、 (2)遍历该结点的左子树(L),

5、 (3)遍历该结点的右子树(R)。

6、以上三种操作有六种执行次序:

7、 NLR、LNR、LRN、NRL、RNL、RLN。

8、 注意:

9、 前三种次序与后三种次序对称,故只讨论先左后右的前三种次序。

10、2.三种遍历的命名

11、 根据访问结点操作发生位置命名:

12、 ① NLR:前序遍历(PreorderTraversal亦称(先序遍历))

13、 ——访问结点的操作发生在遍历其左右子树之前。

14、 ② LNR:中序遍历(InorderTraversal)

15、 ——访问结点的操作发生在遍历其左右子树之中(间)。

16、 ③ LRN:后序遍历(PostorderTraversal)

17、 ——访问结点的操作发生在遍历其左右子树之后。

18、 注意:

19、 由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtlee)和R(Right subtree)又可解释为根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。

20、遍历算法

21、1.中序遍历的递归算法定义:

22、 若二叉树非空,则依次执行如下操作:

23、 (1)遍历左子树;

24、 (2)访问根结点;

25、 (3)遍历右子树。

26、2.先序遍历的递归算法定义:

27、 若二叉树非空,则依次执行如下操作:

28、 (1) 访问根结点;

29、 (2) 遍历左子树;

30、 (3) 遍历右子树。

31、3.后序遍历得递归算法定义:

32、 若二叉树非空,则依次执行如下操作:

33、 (1)遍历左子树;

34、 (2)遍历右子树;

35、 (3)访问根结点。

本文到此讲解完毕了,希望对大家有帮助。