中级农民
- 积分
- 101
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-2-19
- 最后登录
- 1970-1-1
|
来贴个代码,java的,stack实现
- public class InorderNext {
- public static void main(String[] args) {
- TreeNode root=new TreeNode(20);
- TreeNode r1=new TreeNode(10);
- TreeNode r2=new TreeNode(30);
- root.left=r1;root.right=r2;
- TreeNode r3=new TreeNode(5);
- TreeNode r4=new TreeNode(15);
- r1.left=r3;r1.right=r4;
- TreeNode r5=new TreeNode(12);
- TreeNode r6=new TreeNode(17);
- r4.left=r5;r4.right=r6;
- TreeNode r7=new TreeNode(16);
- r6.left=r7;
- InorderNext i=new InorderNext();
- i.next(root);
- TreeNode tmp=r3;
- while(tmp!=null){
- System.out.print(tmp.val+",");
- tmp=tmp.next;
- }
-
- }
-
- private void next(TreeNode r){
- Stack<TreeNode> stack=new Stack<>();
- while(r!=null){
- stack.push(r);
- r=r.left;
- }
-
- while(!stack.isEmpty()){
- TreeNode p=stack.pop();
- if(p.right!=null){
- TreeNode right=p.right;
- while(right!=null){
- stack.push(right);
- right=right.left;
- }
- }
- if(stack.isEmpty()){
- p.next=null;
- return;
- }
- p.next=stack.peek();
- }
- }
- }
- class TreeNode{
- int val;
- TreeNode left;
- TreeNode right;
- TreeNode next;
- public TreeNode(int v){
- this.val=v;
- this.left=null;
- this.right=null;
- this.next=null;
- }
- }
复制代码 |
|