黑马程序员技术交流社区
标题:
求教二叉树
[打印本页]
作者:
孙沛
时间:
2012-9-8 14:30
标题:
求教二叉树
本帖最后由 孙沛 于 2012-9-8 14:32 编辑
早上看数据结构时,二叉平衡树就不怎么看得懂,尝试写代码发现无法进展下去,麻烦懂的人教下
作者:
AngieFans85
时间:
2012-9-8 15:10
/**
* 二叉树加入节点,以及按照中序排序.
*/
class BinaryTree<T extends Comparable<T>> {
private Node root;// 二叉树的根节点
class Node {
private T data;
private Node left;// 左节点
private Node right;// 右节点
public Node(T data) {
this.data = data;
}
/**
* 添加节点
*
* @param newNode
* 要添加的节点,按中序排序.
*/
public void addNode(Node newNode) {
if (newNode.data.compareTo(this.data) <= 0) {
if (this.left == null) {
this.left = newNode;
} else {
this.left.addNode(newNode);
}
}
if (newNode.data.compareTo(this.data) > 0) {
if (this.right == null) {
this.right = newNode;
} else {
this.right.addNode(newNode);
}
}
}
/**
* 按中序遍历并打印.
*/
public void printNode() {
if (this.left != null) {
this.left.printNode();
}
System.out.println(this.data);
if (this.right != null) {
this.right.printNode();
}
}
}
/**
* 为二叉树增加一个节点,如果没有根节点,新增的节点就为根节点,否则将按照中序,为根节点增加新的节点.
*
* @param data
* 节点中的的一个属性,此属性的类型不确定,通过实例化二叉树来决定此数据的具体类型.
*/
public void add(T data) {
Node newNode = new Node(data);
if (this.root == null) {
this.root = newNode;
} else {
this.root.addNode(newNode);
}
}
/**
* 将二叉树的所有节点按中序打印出来
*/
public void print() {
this.root.printNode();
}
}
public class BinaryTreeTest {
public static void main(String[] args) {
BinaryTree<Integer> bt = new BinaryTree<Integer>();
bt.add(3);
bt.add(5);
bt.add(1);
bt.add(0);
bt.add(1);
bt.add(9);
bt.print();
}
}
复制代码
作者:
广驰
时间:
2012-9-8 15:49
说实话在java的编程中很少会直接用到底层的数据结构的东西,这些数据结构在java中都是被封装好的,比如说列表,哈希表,图,二叉树,比如各种排序,等等,直接使用就可以,基本上有个大概了解就可以,而你要了解二叉树,首先你要明白在编程语言中,什么是树的概念,这就涉及到底层的算法设计思想,这种思想其实注重的不是代码,而是解决问题的思路,这就是数据结构,一般大学里面都是有这样的专门课程,如果你想深入了解建议买本数据结构的书看看,或者看看教程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2