A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huangxuanheng 中级黑马   /  2014-8-3 10:37  /  1053 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 huangxuanheng 于 2014-8-6 21:44 编辑

树的结构很简单,只有一个根节点,其他都是子节点,子节点中可能有兄弟,子节点可能还会有子节点。但每一个子节点只有一个父节点。这就是二叉树的结构。那么,如何利用自定义的类模拟创建二叉树呢?

9 个回复

正序浏览
bbdeyouxang 发表于 2014-8-3 21:59
建一个二叉树类,名字可以叫BinaryTree,再建一个节点类,可以叫Node。Node可以是BinaryTree的内部类,也可 ...

说得太好了:hug::victory:
回复 使用道具 举报
建一个二叉树类,名字可以叫BinaryTree,再建一个节点类,可以叫Node。Node可以是BinaryTree的内部类,也可以不是,这个无所谓。BinaryTree里面要有一个Node,做为根节点,也是找其他叶子节点的开始。关键的的是Node类,里面需要定义左叶子,右叶子,二者都是Node,还需要一个nodeValue,做为Node本身的值,之后就是初始化了,二叉树的左右叶子节点和父节点的节点有2n和2n+1的关系,一般都是用这个关系来初始化的。后面就是前中后三种二叉树的遍历了,用递归的话比较简单,希望对楼主有用
回复 使用道具 举报
小乖乖灬浩歌 来自手机 中级黑马 2014-8-3 20:36:03
8#
一个存节点类  一个存根节点类
回复 使用道具 举报
王松朝 发表于 2014-8-3 15:08
class Tree {       public Tree left;
    public Tree right;
}

:handshake.............
回复 使用道具 举报
alvinbx 发表于 2014-8-3 16:59
定义一个Node类,里面记录lastNode(及父节点),然后leftchild,rightchild.至于CRUD可以参考源码或者百度下 ...

谢谢......
回复 使用道具 举报
怀念黑海岸 发表于 2014-8-3 16:27
这应该跟实现自己的双向链表一样,你首先要清楚二叉树的数据结构模式吧:双向链表的结构单元是 ...

回答很好,这些我也懂,不过应该怎么模拟呢?
回复 使用道具 举报
定义一个Node类,里面记录lastNode(及父节点),然后leftchild,rightchild.至于CRUD可以参考源码或者百度下
回复 使用道具 举报
本帖最后由 怀念黑海岸 于 2014-8-3 16:29 编辑

           这应该跟实现自己的双向链表一样,你首先要清楚二叉树的数据结构模式吧:双向链表的结构单元是一个节点(Node),有一个前节点(pro)和后节点(next),pro指向当前节点的前节点,next指向当前节点的后节点。当pro=null意味着当前节点是链表的第一个元素,next=null则表示是最后一个元素。而二叉树的结构单元也应该是类似的吧,有一个左节点(left),右节点(right),还应该有一个父节点(father)指向上一级的二叉树节点。左右节点分别指向比当前节点大或者小的元素,而当父节点father=null的话意味当前节点是根节点。当left=null&right=null的时候就表示是最小的二叉树节点了。
       全是个人浅见,回答不好请担待。
回复 使用道具 举报
class Tree {       public Tree left;
    public Tree right;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马