编程题练习日记-2-二叉树遍历

原创 2018年04月15日 23:59:11

前序中序后序,按层次。

这里递归的很好写就不写了,主要复习非递归的。

树:         4
         2     6  
       1  3   5  7 
              8
          10

非递归前序:

/**
    UnRecursive PreOrder, 非递归前序遍历
 **/
 PreOrder(BinaryTree<T> root) {
    Stack s = new Stack();
	Node n = root ;
	s.push(n) ;
	while(n!=null || !s.empty()) { 
		while(n!=null) {
		   println(n)
		   n = n->left 
		   s.push(n)
		}
		 
		if(!s.empty()) {
	 	   n = s.pop();
           s.push(n->right) ;			
		}
	}
 }
非递归前序遍历: 4   2   1   3   6   5   7   8   10 

首轮写的时候两个忘记的地方:

//非递归前序遍历没注意到的两个问题:
 1)n!=null || !s.empty() 应该是||,因为访问至最左下角1的时候,需要先将1的left进栈,发现空后pop1,
 然后push1的右孩子,其实还是空,然后进入下一个大循环,此时如果使用&&就跳出了,应该用||使得继续直接执行至pop1的父亲2,然后继续。
 2) if(!s.empty()) {  }  //注意这里栈pop前添加判断有助于防止空栈溢出。

 /**
    UnRecursive InOrder, 非递归中序遍历
  **/
  InOrder(BiNode T) {
     Stack s = new Stack() ;
while(T!=null||!s.empty()) {
   while(T!=null) {
  s.push(T->left) ;
  T = T->left ;
}

if(!s.empty()) {
  T = s.pop() ;
  println(T);
  T = T->right ;
}
}
  }
 
 
 非递归中序遍历:1 2 3 4 5 6 7 8 10 
 


【华为练习题】二叉树遍历

【华为练习题】二叉树遍历题目二叉树遍历 描述: 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其...
  • sps900608
  • sps900608
  • 2016-09-13 23:28:05
  • 822

二叉树的三种遍历练习题

一 二叉树的基础问题
  • XSF50717
  • XSF50717
  • 2014-10-11 20:10:33
  • 6191

高斯日记题我的思路以及编程过程

我的思路:1 , 算输入的数字距1777年共有多少年闰年多少年平年 2,用输入的数字除以365,得到总年数,从而得到减去那些年数的天数之后的剩余天数,这个剩余天数是决定月与日的。 ...
  • qq_30502811
  • qq_30502811
  • 2016-03-27 22:22:01
  • 255

二叉树大总结1_二叉树的各种题(遍历、查找)

  • 2016年12月09日 15:23
  • 15KB
  • 下载

二叉树相关编程题总结

关于二叉树的五道面试题的总结 求二叉树的最远两个结点的距离; 由前序遍历和中序遍历重建二叉树; 判断一棵树是否是完全二叉树; 求二叉树两个节点的最近公共祖先; 将二叉搜索树转换成一个排序的双向链表。要...
  • bitboss
  • bitboss
  • 2016-12-01 17:18:54
  • 1791

刷刷笔试题~~[二叉树编程]

1.给定一颗二叉树,以及其中的两个node(地址均非空),要求给出这两个node的一个公共父节点,使得这个父节点与两个节点的路径之和最小。描述你程序的最坏时间复杂度,并实现具体函数 C++函数原型: ...
  • nanaMasuda
  • nanaMasuda
  • 2016-09-05 18:34:04
  • 1120

js编程练习

1.题目:某班的成绩出来了,现在老师要把班级的成绩打印出来。 效果如下:xxx年xx月x日  星期x--班级总分为:81 格式要求:1.显示打印的日期。格式为类似“xxxx年xx月xx日 星期x”的当...
  • daimomo000
  • daimomo000
  • 2017-01-17 17:13:06
  • 1231

分享一个网站,里面有一些关于编程的题,上去练习下不错

http://218.4.165.132:8080/oj/ 先注册一个账号,随便填填就行了,要记住账号和密码哈~...
  • a191030148
  • a191030148
  • 2012-10-27 23:57:29
  • 2319

JAVA基础编程练习题--50道之13

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?在那50题看到这个的时候,感觉挺简单的,但是实际做出来的时候,花费了真不少时间(小白,不太懂),也看了网...
  • qq_41201398
  • qq_41201398
  • 2017-11-28 13:21:18
  • 57

黑马程序员------50道JAVA基础编程练习题

------- android培训、java培训、期待与您交流! ---------- 50道JAVA基础编程练习题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对...
  • a768818702
  • a768818702
  • 2015-11-06 14:18:26
  • 8397
收藏助手
不良信息举报
您举报文章:编程题练习日记-2-二叉树遍历
举报原因:
原因补充:

(最多只允许输入30个字)