Chinaunix首页 | 论坛 | 博客
  • 博客访问: 565169
  • 博文数量: 127
  • 博客积分: 1169
  • 博客等级: 少尉
  • 技术积分: 1298
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-16 14:29
个人简介

空白

文章分类

全部博文(127)

分类: C/C++

2012-03-04 19:48:57

数的遍历有三种方式:前序,中序,后序
前序遍历(DLR):前序遍历也叫做先根遍历、先序遍历,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。若为空则结束返回,否则:
(1)访问根结点.
(2)前序遍历左子树.   
(3)前序遍历右子树 .    
注意的是:遍历左右子树时仍然采用前序遍历方法。
如上图所示二叉树前序遍历,也叫先根遍历,遍历的顺序是,根,左子树,右子树
遍历结果:ABDECF   
,也叫,顺序是 左子树,根,右子树
遍历结果:DBEAFC   
,也叫后根遍历,遍历顺序,左子树,右子树,根
遍历结果:DEBFCA程序实现  树的遍历一般都用递归实现,比较方便C版本  树中节点结构为:
  1. /*树结构体*/
  2. typedef struct TreeNode{   
  3.     int data; /*数据*/
  4.     TreeNode * left; /*左孩子*/
  5.     TreeNode * right; /*右孩子*/
  6.     TreeNode * parent; /*父亲节点*/
  7. }TreeNode;

  8. void pre_order(TreeNode * Node)   
  9. {  
  10.     if(Node != NULL)   
  11.     {   
  12.          printf("%d ", Node->data);
  13.          pre_order(Node->left);
  14.          pre_order(Node->right);
  15.     }   
  16. }   
  17. 调用时:
  18. pre_order(Root); //Root为树的根

已知一棵二叉树的前序遍历序列和中序遍历序列,可以唯一确定这棵二叉树。

已知一棵二叉树的后序遍历序列和中序遍历序列,也可以唯一确定这棵二叉树。

但是,已知一棵二叉树的前序遍历序列和后序遍历序列,不能唯一确定这棵二叉树。

阅读(3105) | 评论(0) | 转发(0) |
0

上一篇:c经典好书

下一篇:单链表实现(c语言)

给主人留下些什么吧!~~