樹的中序遍歷
在這種遍歷方法中,先訪問左子樹,然後訪問根節點,最後訪問右子樹。我們應該始終記住,每個節點都可以表示一個子樹本身。
如果二叉樹以中序方式遍歷,則輸出將生成按升序排序的鍵值。
我們從A開始,按照中序遍歷,移動到它的左子樹B。B也以中序方式遍歷。此過程持續進行,直到訪問所有節點。這棵樹的中序遍歷的輸出將為:
D → B → E → A → F → C → G
演算法
直到所有節點都被遍歷:
Step 1: Recursively traverse left subtree. Step 2: Visit root node. Step 3: Recursively traverse right subtree.
示例
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 InOrderBinaryTree {
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("inorder arrangement of given elements: ");
inOrder(node);
}
public static void inOrder(Node root) {
if(root !=null) {
inOrder(root.leftNode);
System.out.println(root.data);
inOrder(root.rightNode);
}
}
}
輸出
inorder arrangement of given elements: 45 60 64 50 45 60 64
廣告