java 链表实现二叉树
来源:互联网 发布:成都长城开发科技 知乎 编辑:程序博客网 时间:2024/06/05 21:59
public class BinaryTree
{
private Node root;
/**
* 内部类实现结点类,可提高安全性
* @author nishiting
*
*/
private static class Node {
Node left;
Node right;
int data;
Node(int newData) {
left = null;
right = null;
data = newData;
}
}
/**
* 创建一个空的二叉树
*/
public BinaryTree() {
root = null;
}
/**
* 递归的插入数值
* @param data 要插入的数值
*/
public void insert(int data) {
root = insert(root, data);
}
/**
* 将数值插入到二叉树中,比当前结点小或等于当前结点的插在当前结点的左侧,比当前结点大的数插在当前结点的右侧,每次从根结点开始递归比较
* @param node 当前的结点,就是根结点,只是每次根结点的左右子孙更新
* @param data 要插入的数值
* @return 新排好的二叉树
*/
private Node insert(Node node, int data) {
if (node == null) {
node = new Node(data);
} else {
if (data <= node.data) {
node.left = insert(node.left, data);
} else {
node.right = insert(node.right, data);
}
}
return (node);
}
/**
* 将数值输入构建二叉树
* @param data 要输入的数值
*/
public void buildTree(int[] data) {
for (int i = 0; i < data.length; i++) {
insert(data[i]);
}
}
/**
* 递归打印出二叉树
*/
public void printTree() {
printTree(root);
System.out.println();
}
/**
* 从根结点开始遍历,从树的最高层叶子结点开始输出,从左至右
* @param node 当前的结点
*/
private void printTree(Node node) {
if (node == null)
return;
// left, node itself, right
printTree(node.left);
System.out.print(node.data + " ");
printTree(node.right);
}
public static void main(String[] args)
{
BinaryTree biTree = new BinaryTree();
int[] data = { 2, 8, 7, 4 ,9,3,1,6,7,5};
biTree.buildTree(data);
biTree.printTree();
}
}
{
private Node root;
/**
* 内部类实现结点类,可提高安全性
* @author nishiting
*
*/
private static class Node {
Node left;
Node right;
int data;
Node(int newData) {
left = null;
right = null;
data = newData;
}
}
/**
* 创建一个空的二叉树
*/
public BinaryTree() {
root = null;
}
/**
* 递归的插入数值
* @param data 要插入的数值
*/
public void insert(int data) {
root = insert(root, data);
}
/**
* 将数值插入到二叉树中,比当前结点小或等于当前结点的插在当前结点的左侧,比当前结点大的数插在当前结点的右侧,每次从根结点开始递归比较
* @param node 当前的结点,就是根结点,只是每次根结点的左右子孙更新
* @param data 要插入的数值
* @return 新排好的二叉树
*/
private Node insert(Node node, int data) {
if (node == null) {
node = new Node(data);
} else {
if (data <= node.data) {
node.left = insert(node.left, data);
} else {
node.right = insert(node.right, data);
}
}
return (node);
}
/**
* 将数值输入构建二叉树
* @param data 要输入的数值
*/
public void buildTree(int[] data) {
for (int i = 0; i < data.length; i++) {
insert(data[i]);
}
}
/**
* 递归打印出二叉树
*/
public void printTree() {
printTree(root);
System.out.println();
}
/**
* 从根结点开始遍历,从树的最高层叶子结点开始输出,从左至右
* @param node 当前的结点
*/
private void printTree(Node node) {
if (node == null)
return;
// left, node itself, right
printTree(node.left);
System.out.print(node.data + " ");
printTree(node.right);
}
public static void main(String[] args)
{
BinaryTree biTree = new BinaryTree();
int[] data = { 2, 8, 7, 4 ,9,3,1,6,7,5};
biTree.buildTree(data);
biTree.printTree();
}
}
- 数据结构:二叉树的二叉链表存储--Java实现
- 二叉树的二叉链表存储及其Java实现
- 二叉树的二叉链表存储(java实现)
- java 链表实现二叉树
- JAVA 实现二叉树
- 二叉树 java实现
- 二叉树实现-java
- JAVA 实现二叉树。
- 二叉树Java实现
- java实现二叉树
- 二叉树Java实现
- Java实现二叉树
- Java实现二叉树
- 二叉树java实现
- java 实现二叉树
- 二叉树--java实现
- Java实现二叉树
- java实现二叉树
- vim的一个较全的介绍
- 数字转换成字符串
- 那些年,我们一起吐槽的iPhone5
- JS判断字符串是否为正整数
- poj 2354 Titanic(球面两点距离)
- java 链表实现二叉树
- algorithm库介绍之---- partition()方法和 stable_partition()方法
- PowerDesigner出现you need to install VBScript before you can run scripts的解决办法
- windows、linux 下如何查看80端口占用情况
- do…while(0)的妙用
- MongoDB运行状态、性能监控,分析
- 冒泡排序 选择排序 插入排序
- 若爱 就如桃花般地去爱
- 值得思考