建立二叉樹
樹是一種資料結構,其元素/節點彼此連線,類似於連結串列。但是,與連結串列不同,樹是一種非線性資料結構,其中樹中的每個元素/節點都以分層的方式連線到多個節點。
在樹中,沒有任何前置元素的節點,即樹頂部的節點,稱為根節點。每棵樹只包含一個根節點。
除根節點外的任何節點都有一條向上連線到稱為父節點的節點的邊。
透過其向下連線的邊連線到給定節點下方的節點稱為其子節點。
沒有任何子節點的節點稱為葉子節點。
每個節點最多有 0 個、1 個或 2 個子節點(最多 2 個)的樹稱為二叉樹。二叉樹兼具有序陣列和連結串列的優點,因為搜尋速度與排序陣列一樣快,而插入或刪除操作的速度與連結串列一樣快。
在 Java 中建立二叉樹
要建立/實現二叉樹,請建立一個 Node 類,該類將儲存int值並保留對每個子節點的引用,建立三個變數。
兩個 Node 型別的變數用於儲存左節點和右節點,一個整數型別的變數用於儲存資料。然後從另一個類嘗試建立節點,以便在分層方式下,沒有節點應該具有超過 2 個子節點。
示例
以下是在此處建立二叉樹的示例,我們建立了一個 Node 類,其中包含用於資料、左節點和右節點的變數,包括 setter 和 getter 方法來設定和檢索它們的值。
import java.util.LinkedList;
import java.util.Queue;
class Node{
int data;
Node leftNode, rightNode;
Node() {
leftNode = null;
rightNode = null;
this.data = data;
}
Node(int data) {
leftNode = null;
rightNode = null;
this.data = data;
}
int getData() {
return this.data;
}
Node getleftNode() {
return this.leftNode;
}
Node getRightNode() {
return this.leftNode;
}
void setData(int data) {
this.data = data;
}
void setleftNode(Node leftNode) {
this.leftNode = leftNode;
}
void setRightNode(Node rightNode) {
this.leftNode = rightNode;
}
}
public class CreatingBinaryTree {
public static void main(String[] args){
Node node = new Node(50);
node.leftNode = new Node(60);
node.leftNode.leftNode = new Node(45);
node.leftNode.rightNode = new Node(64);
node.rightNode = new Node(60);
node.rightNode.leftNode = new Node(45);
node.rightNode.rightNode = new Node(64);
System.out.println("Binary Tree Created Pre-order of its elements is: ");
preOrder(node);
}
public static void preOrder(Node root){
if(root !=null){
System.out.println(root.data);
preOrder(root.leftNode);
preOrder(root.rightNode);
}
}
}
輸出
Binary Tree Created Pre-order of its elements is: 50 60 45 64 60 45 64
廣告