首页 > 代码库 > 第5章 树与二叉树

第5章 树与二叉树

    1. 递归算法与非递归算法实现二叉树的遍历 ---- NOT BUG FREE

技术分享
 1 public class BiTree{
 2     private BiTreeNode root;
 3     public BiTree(){
 4         this.root = null;
 5     }
 6     public BiTree(BiTreeNode root){
 7         this.root = root
 8     }
 9     //遍历法
10     public void preRootTraverse(BiTreeNode T){
11         if(T != null){
12             System.out.printIn(T.data);
13             preRootTraverse(T.lchild);
14             preRootTraverse(T.rchild);
15         }
16     }
17     //非遍历法**创建栈对象,根节点入栈;栈非空时,栈顶弹出并访问结点;
18     //对当前访问结点的非空左孩子结点相继依次访问,并将当前访问结点的非空右孩子结点压入栈内。
19     //循环执行,直到栈空。
20     public void preRootTraverse(){
21         BiTreeNode T = root;
22         if(T != null){
23             LinkStack s = new LinkStack();
24             s.push(T);
25             while(!s.isEmpty){
26                 T = (BiTreeNode)s.pop();
27                 System.out.print(T.data);
28                 /*while(T.lchild != null){
29                     T = T.lchild;
30                     System.out.print(T.data);
31                     if(T.rchild != null){
32                         s.push(T.rchild)
33                     }
34                 }*/
35                 while(T != null){
36                     if(T.lchild != null){
37                         System.out.print(T.lchild.data);
38                     }
39                     if(T.rchild != null){
40                         s.push(T.rchild);
41                     }
42                     T = T.lchild;
43                 }
44             }
45         }
46     }
47 }
View Code

 

第5章 树与二叉树