已解决问题 - 浏览429次

下一个已解决问题
cttgbabc123321cttgbabc123321

高级书童


谁知道计算机等级考试中二叉树是怎么回事啊!

急急!!!!!!!!!!!!

还可输入300个字

请输入上图中的验证码,字母不区分大小写。

点击查看更多 考试中 谁知道 等级 相关信息

都快乐都快乐

圣贤


最佳答案 - 由提问者2007-09-12 21:03:49选出

 所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。
 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。

遍历方案

1.遍历方案
 从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:
 (1)访问结点本身(N),
 (2)遍历该结点的左子树(L),
 (3)遍历该结点的右子树(R)。
以上三种操作有六种执行次序:
 NLR、LNR、LRN、NRL、RNL、RLN。
注意:
 前三种次序与后三种次序对称,故只讨论先左后右的前三种次序。

2.三种遍历的命名
 根据访问结点操作发生位置命名:
  ① NLR:前序遍历(PreorderTraversal亦称(先序遍历))
——访问结点的操作发生在遍历其左右子树之前。
  ② LNR:中序遍历(InorderTraversal)
——访问结点的操作发生在遍历其左右子树之中(间)。
  ③ LRN:后序遍历(PostorderTraversal)
——访问结点的操作发生在遍历其左右子树之后。
注意:
 由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtlee)和R(Right subtree)又可解释为根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。

遍历算法

1.中序遍历的递归算法定义:
 若二叉树非空,则依次执行如下操作:
(1)遍历左子树;
(2)访问根结点;
(3)遍历右子树。

2.先序遍历的递归算法定义:
 若二叉树非空,则依次执行如下操作:
(1) 访问根结点;
(2) 遍历左子树;
(3) 遍历右子树。

3.后序遍历得递归算法定义:
 若二叉树非空,则依次执行如下操作:
(1)遍历左子树;
(2)遍历右子树;
(3)访问根结点。

4.中序遍历的算法实现
 用二叉链表做为存储结构,中序遍历算法可描述为:
void InOrder(BinTree T)
{ //算法里①~⑥是为了说明执行过程加入的标号
① if(T) { // 如果二叉树非空
② InOrder(T->lchild);
③ printf("%c",T->data); // 访问结点
④ InOrder(T->rchild);
⑤ }
⑥ } // InOrder

参考资料

net

1 0

还可输入300个字

请输入上图中的验证码,字母不区分大小写。

提问者对最佳答案的评价 *

多谢,终于有了个详细答案!

其他回答(1)

  • ycitslycitsl

    高级书童


    二叉树排序树一句两句说不清,到网上自己找道题目自己看看就知道了

    还可输入300个字

    请输入上图中的验证码,字母不区分大小写。

返回知识堂首页>>

如果您没能找到需要的内容,请
提出您的问题>>

猜你喜欢看

更多
1