@XQF
2018-03-07T23:00:19.000000Z
字数 1450
阅读 889
数据结构与算法
二叉树的递归定义:二叉树或者是一棵空树,或者是一棵由根节点和左右子树组成,。,其中左右子树同样是一棵二叉树
二叉排序树的性质:
重要的是步骤非插入不可,。,。和链表一样,。用个指针。
class TreeNode {
int data;
TreeNode left;
TreeNode right;
public TreeNode(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}
class BinaryTree {
TreeNode root;
public BinaryTree() {
root = null;
}
public void insert(int data) {
TreeNode node = new TreeNode(data);
if (root == null) {
root = node;
} else {
TreeNode dummy = root;
while (true) {
if (node.data < dummy.data) {
if (dummy.left == null) {
dummy.left = node;
return;
}
dummy = dummy.left;
} else {
if (dummy.right == null) {
dummy.right = node;
return;
}
dummy = dummy.right;
}
}
}
}
public TreeNode create(int[] datas) {
for (int i = 0; i < datas.length; i++) {
insert(datas[i]);
}
return root;
}
public void inOrder(TreeNode root) {
if (root != null) {
inOrder(root.left);
System.out.print(root.data + " ");
inOrder(root.right);
}
}
public void preOrder(TreeNode root) {
if (root != null) {
System.out.print(root.data + " ");
preOrder(root.left);
preOrder(root.right);
}
}
public void postOrder(TreeNode root) {
if (root != null) {
postOrder(root.left);
postOrder(root.right);
System.out.print(root.data + " ");
}
}
}
public class Solution {
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
int[] nums = {1, 3, 4, 5, 6, 4, 3, 2};
System.out.print("中序:");
TreeNode root = tree.create(nums);
tree.inOrder(root);
System.out.println();
System.out.print("先序:");
tree.preOrder(root);
System.out.println();
System.out.print("后序:");
tree.postOrder(root);
System.out.println();
}
}