public class BinarySearhTree {
// 属性
private TreeNode root; //根节点
private int size;
public void add(String s) {
if (root == null) {
root = new TreeNode(null, s, null);
return;
}
TreeNode node = root;
while (node != null) {
int cmp = s.compareTo(node.data);
if (cmp < 0) { //左,比父亲节点小
if (node.left == null) {
node.left = new TreeNode(null, s, null);
break;
}
node = node.left;
} else if (cmp > 0) { //右,比父亲节点大
if (node.right == null) {
node.right = new TreeNode(null, s, null);
break;
}
node = node.right;
} else {
return;
}
}
size++;
}
private TreeNode add(TreeNode node, String s) {
if (node == null) {
node = new TreeNode(null, s, null);
return node;
}
int cmp = s.compareTo(node.data);
if (cmp < 0) {
return node.left = add(node.left, s);
} else if (cmp > 0) {
return node.right = add(node.right, s);
} else {
return node;
}
}
public boolean isEmpty() {
return size == 0;
}
public int size() {
return size();
}
public void preOrder() {
preOrder(root);
System.out.println();
}
private void preOrder(TreeNode node) {
if (node == null) {
return;
}
System.out.print(node.data + " ");
preOrder(node.left);
preOrder(node.right);
}
public void inOrder() {
inOrder(root);
System.out.println();
}
private void inOrder(TreeNode node) {
if (node == null) {
return;
}
inOrder(node.left);
System.out.print(node.data + " ");
inOrder(node.right);
}
public void postOrder() {
postOrder(root);
System.out.println();
}
private void postOrder(TreeNode node) {
if (node == null) {
return;
}
postOrder(node.left);
postOrder(node.right);
System.out.print(node.data + " ");
}
public void levelOrder() {
levelOrder(root);
System.out.println();
}
public void levelOrder(TreeNode node) { //层次遍历借助队列
LinkedList<TreeNode> queue = new LinkedList<>();
if (node == null) {
return;
}
queue.offer(root); //根节点入队
while (!queue.isEmpty()) {
node = queue.poll(); //出队
System.out.print(node.data + " ");
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
}
private static class TreeNode {
private TreeNode left;
private String data;
private TreeNode right;
public TreeNode() {
}
public TreeNode(TreeNode left, String data, TreeNode right) {
this.left = left;
this.data = data;
this.right = right;
}
}
java实现二叉树前序中序后序层次遍历
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 建立一颗二叉排序树,并输出它的前序、中序、后序以及层次遍历结果 输入:56 9 1 5 8输出:6 1 5 9 8...
- 如果文章可以帮助到您,这是我写文章的荣幸。这篇文章您可以了解到: 二叉树的各种遍历方法的简单解释 遍历方法的递归和...
- 前言:在上一节中,我们对树及其相关知识做了了解,对二叉搜索树做了基本的实现,下面我们继续完善我们的二叉搜索树。对于...
- 最近看了一下大学的数据结构,🈶学到了以前没学到的东西看到了二叉树那一块,感觉二叉树是个很重要的东西,就看了一下底层...