| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1699 人关注过本帖
标题:关于二叉树输出问题 --- > 没有变成死循环吗?
只看楼主 加入收藏
zzjvslove
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:46
专家分:197
注 册:2016-5-23
结帖率:100%
收藏
 问题点数:0 回复次数:3 
关于二叉树输出问题 --- > 没有变成死循环吗?
class BinaryTree{
    class Node{            
        private Comparable data ;   
        private Node left ;            
        private Node right ;        
        public Node(Comparable data){
            this.data = data ;
        }
        public void addNode(Node newNode){
            if(newNode.(this.data)<0){   
                if(this.left==null){
                    this.left = newNode ;   
                }else{
                    this.left.addNode(newNode) ;   
                }
            }
            if(newNode.(this.data)>=0){   
                if(this.right==null){
                    this.right = newNode ;   
                }else{
                    this.right.addNode(newNode) ;   
                }
            }
        }
        public void printNode(){            [color=#0000FF][color=#FF0000]//在输出时、这一段为什么不是一个死循环啊?[/color]
            if(this.left!=null){
                this.left.printNode() ;   
            }
            System.out.print(this.data + "\t") ;
            if(this.right!=null){
                this.right.printNode() ;
            }
        }[/color]
    };
    private Node root ;        
    public void add(Comparable data){   
        Node newNode = new Node(data) ;   
        if(root==null){   
            root = newNode ;   
        }else{
            root.addNode(newNode) ;
        }
    }
    public void print(){
        this.root.printNode() ;   
    }
};
public class ComparableDemo03{
    public static void main(String args[]){
        BinaryTree bt = new BinaryTree() ;
        bt.add(8) ;
        bt.add(3) ;
        bt.add(3) ;
        bt.add(10) ;
        bt.add(9) ;
        bt.add(1) ;
        bt.add(5) ;
        bt.add(5) ;
        System.out.println("排序之后的结果:") ;
        bt.print() ;
    }
};
搜索更多相关主题的帖子: null 二叉树 public private 
2016-05-24 23:45
zzjvslove
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:46
专家分:197
注 册:2016-5-23
收藏
得分:0 
颜色没有标识好、不好意思!

关于那个节点循环输出的问题  --- >
当根节点传入输出时、不断循环嵌套判定根节点的左边是不是空、当空的时候输出当前的根节点。
然后当前的根节点判断右边是不是空、不为空则再调用printNode()方法、进入后又先判断左手是否为空。可此时已经判断过了。

所以这样不会导致死循环吗?
2016-05-24 23:54
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
下次判断就是左手的左手了,除非addNode了无限个,不会出现死循环。
2016-05-25 09:52
zzjvslove
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:46
专家分:197
注 册:2016-5-23
收藏
得分:0 
回复 3楼 grmmylbs
谢谢!

现在是这样的哦!!
当根节点一直递归调用到函数最内层时、判断左边为空时、就输出最左边手的。(假设:从左到右排列按1、2、3。。。、此时最左边是1、则输出)

程序继续运行输出那一句的下面的判断右边的、但此时的this是指最左边的。

然后判断此时的this.rigth(即第2个)是不是空、不为空、则递归调用、把this.right(第2个)传入函数
此时、又先执行第一条语句、先判断this.right左边是不是为空(即判断第1个是不是空、这样不是又回到死调用了么)


请高手明示
2016-05-25 15:02
快速回复:关于二叉树输出问题 --- > 没有变成死循环吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014981 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved