java版二叉树,Java版——二叉树

1 packagebinary_search_tree1;2

3 importjava.util.Queue;4 importjava.util.Stack;5

6 public classIntBST {7 protectedIntBSTNode root;8 publicIntBST(){9 root = null;10 }11 protected voidvisit(IntBSTNode p){12 System.out.println(p.key+" ");13 }14 public IntBSTNode search(IntBSTNode p, inte1){15 while(p != null)16 if(e1 ==p.key)17 returnp;18 else if(e1

66 IntBSTNode p =root;67 Stack traveStack = newStack();68 if(p != null)69 traveStack.push(p);70 while(!traveStack.isEmpty()){71 p =(IntBSTNode)traveStack.pop();72 visit(p);73 if(p.right != null)74 traveStack.push(p.right);75 if(p.left != null)76 traveStack.push(p.left);77 }78 }79 public void iterativeInorder(){ //中序遍历树的非递归实现

80 IntBSTNode p =root;81 Stack traveStack = newStack();82 while(p != null){83 while(p != null){84 if(p.right != null)85 traveStack.push(p.right);86 traveStack.push(p);87 p =p.left;88 }89 p =(IntBSTNode)traveStack.pop();90 while(!traveStack.isEmpty()&&p.right==null){91 visit(p);92 p =(IntBSTNode)traveStack.pop();93 }94 visit(p);95 if(!traveStack.isEmpty())96 p =(IntBSTNode)traveStack.pop();97 else p = null;98 }99 }100 public void iterativePostorder(){ //后序遍历树的非递归实现

101 IntBSTNode p = root, q =root;102 Stack traveStack = newStack();103 while(p != null){104 for(; p.left != null; p =p.left)105 traveStack.push(p);106 while(p != null&&(p.right==null||p.right==q)){107 visit(p);108 q =p;109 if(traveStack.isEmpty())110 return;111 p =(IntBSTNode)traveStack.pop();112 }113 traveStack.push(p);114 p =p.right;115 }116 }117 public void MorrisInorder(){ //Morris中序遍历算法的实现

118 IntBSTNode p =root,tmp;119 while(p != null)120 if(p.left == null){121 visit(p);122 p =p.right;123 }124 else{125 tmp =p.left;126 while(tmp.right != null&&tmp.right !=p)127 tmp =tmp.right;128 if(tmp.right == null){129 tmp.right =p;130 p =p.left;131 }132 else{133 visit(p);134 tmp.right = null;135 p =p.right;136 }137 }138 }139 public void insert(inte1){140 IntBSTNode p = root, prev = null;141 while(p != null){142 prev =p;143 if(p.key

155 IntBSTNode tmp, node, p = root, prev = null;156 while(p != null&&p.key !=e1){157 prev =p;158 if(p.key

186 IntBSTNode node, p = root, prev = null;187 while(p != null &&p.key !=e1){188 prev =p;189 if(p.key

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值