一、BinaryTreeDemo類
package 二叉樹;
public class Demo {
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
binaryTree.add(8);
binaryTree.add(1);
binaryTree.add(22);
binaryTree.add(33);
binaryTree.add(17);
binaryTree.add(4);
binaryTree.add(2);
binaryTree.add(6);
binaryTree.printCenterTree();
System.out.println("中序");
binaryTree.printBeforeTree();
System.out.println("前序");
binaryTree.printAfterTree();
System.out.println("后序");
}
}
二、BinaryTree類
package 二叉樹;
// 比較小的數放在左邊,比較大的書放在右邊
public class BinaryTree {
private Node root; // 先定義一個根節點
public void add(int data) {
if (root == null) { // 如果跟節點不存在,就把數據放在根節點
root = new Node(data);
} else {
root.addNode(data);
}
}
public void printCenterTree() {
root.printCenterNode();
}
public void printBeforeTree() {
root.printBeforeNode();
}
public void printAfterTree() {
root.printAfterNode();
}
private class Node {
private int data; // 數據
private Node left; // 左邊
private Node right; // 右邊
public Node(int data) {
this.data = data;
}
public void addNode(int data) {
if (data > this.data) { // 大于根節點數放在右邊
if (this.right == null) { // 如果根節點沒有節點,就實例化賦值給右邊
this.right = new Node(data);
} else {
this.right.addNode(data); // 如果存在右節點,一直遞歸到沒有節點
}
} else {
if (this.left == null) {
this.left = new Node(data);
} else {
this.left.addNode(data);
}
}
}
// 打印節點
//中序打印(左根右)
public void printCenterNode() {
// 如果左節點存在,遞歸到不存在
if (this.left != null) {
this.left.printCenterNode();
}
System.out.print(this.data + "=>");
// 如果右節點存在,遞歸到不存在
if (this.right != null) {
this.right.printCenterNode();
}
}
// 前序打印(根左右)
public void printBeforeNode() {
System.out.print(this.data + "=>");
// 如果左節點存在,遞歸到不存在
if (this.left != null) {
this.left.printCenterNode();
}
// 如果右節點存在,遞歸到不存在
if (this.right != null) {
this.right.printCenterNode();
}
}
// 后續遍歷 (左右根)
public void printAfterNode() {
// 如果左節點存在,遞歸到不存在
if (this.left != null) {
this.left.printCenterNode();
}
// 如果右節點存在,遞歸到不存在
if (this.right != null) {
this.right.printCenterNode();
}
System.out.print(this.data + "=>");
}
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。