Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 432|回复: 0

关于递归调用中对象的变化求助!

[复制链接]

该用户从未签到

发表于 2015-3-8 15:02:28 | 显示全部楼层 |阅读模式
3Java金币
import java.util.*;   
class BinarySearchTree{   
         private class Node{   
                 public void addNode(Node newNode){   
                         if(newNode.data.compareTo(data)<0){   
                                 //要放在左子树   
                                 if (left==null){   
                                         left = newNode;   
                                 }else{   
                                         //还要继续向下进行判断   
                                         left.addNode(newNode);   
                                 }   
                         }   
                         if (newNode.data.compareTo(data)>0){   
                                 if (right==null){   
                                         right = newNode;   
                                 }else{   
                                         //还要继续向下进行判断   
                                         right.addNode(newNode);   
                                 }   
                         }   
                 }   
                 //输出操作   
                 public void printNode(){   
                         if (left!=null){   
                                 left.printNode();   
                         }   
                         System.out.println(data);   
                         if (right!=null){   
                                 right.printNode();   
                         }   
                 }   
                 //左子树   
                 public Node left;   
                 //右子树   
                 public Node right;   
                 //在此处加入一个自己的比较值   
                 public Comparable data;   
         }   
         //必须存在一个根节点,且第一个放进去的元素就是根节点   
         private Node root;   
         //不管怎么放,实际上最终都必须向Comparable接口的类型进行转换   
         public void add(Comparable obj){   
                 //必须实例化好一个节点   
                 Node newNode = new Node();   
                 //设置自己的内容   
                 newNode.data = obj;   
                 //判断是否是第一个放入的元素   
                 if (root==null){   
                         root = newNode;   
                 }else{   
                         //就必须进行依次判断,看是放在左子树还是右子树   
                         root.addNode(newNode);   
                 }   
         }   
         public void print(){   
                 root.printNode();   
         }   
}   
//使用TreeSet进行排序   
public class Demo21{   
         public static void main(String[] args){   
                 BinarySearchTree bst = new BinarySearchTree();   
                 bst.add("X");   
                 bst.add("A");   
                 bst.add("Y");   
                 bst.add("G");   
                 bst.add("C");   
                 bst.print();   
         }   
}


--------------------------------------------------------------------------------
                public void printNode(){   
                        if (left!=null){   
                                left.printNode();    //这里的left什么时候才会为空啊~
                        }   
                        System.out.println(data);   
                        if (right!=null){   
                                right.printNode();   
                        }   
                }   

回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-3-8 16:48:36 | 显示全部楼层
就是在递归中对象的变化不怎么明白,比如前面提到的 if (left!=null){   
                                                                            left.printNode();   
                                                                          }  当当前的left不为空时会进入下一次循环,那么下一次的left对象是什么?   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-3-29 09:26 , Processed in 0.361472 second(s), 45 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表