二叉树的前序、中序和后序遍历介绍及案例
生活随笔
收集整理的這篇文章主要介紹了
二叉树的前序、中序和后序遍历介绍及案例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、介紹
- 二、建立二叉樹
- 1.節點類
- 2.二叉樹
- 三、前序遍歷
- 四、中序遍歷
- 五、后序遍歷
- 六、完整代碼
一、介紹
前序遍歷、中序遍歷和后序遍歷是二叉樹的三種遍歷方式,三者很像,具體的遍歷步驟如下:
前序遍歷:先輸出父節點,然后依次遍歷左子樹,右子樹。
中序遍歷:先遍歷左子樹,后輸出父節點,之后遍歷右子樹。
后序遍歷:先遍歷左子樹,后遍歷右子樹,之后輸出父節點。
二、建立二叉樹
1.節點類
class Node{int num;//數據Node left;//左節點Node right;//右節點public Node(int num) {this.num = num;}@Overridepublic String toString() {return "Node{" +"num=" + num +'}';} }2.二叉樹
因為這里的二叉樹是普通的,沒有其他特性,不好建立二叉樹類,就在main方法里面直接掛上就行了。這里我們以下圖的二叉樹為例。
main方法里面的代碼:
三、前序遍歷
使用遞歸的方法進行前序遍歷,直接上代碼。
public static void preOrder(Node root){if(root == null){return;}System.out.print(root+" ");preOrder(root.left);preOrder(root.right);}結果:
Node{num=1} Node{num=2} Node{num=4} Node{num=8} Node{num=5} Node{num=3} Node{num=6} Node{num=9} Node{num=7}
四、中序遍歷
public static void infixOrder(Node root){if(root == null){return;}infixOrder(root.left);System.out.print(root+" ");infixOrder(root.right);}結果:
Node{num=8} Node{num=4} Node{num=2} Node{num=5} Node{num=1} Node{num=6} Node{num=9} Node{num=3} Node{num=7}
五、后序遍歷
public static void postOrder(Node root){if(root == null){return;}postOrder(root.left);postOrder(root.right);System.out.print(root+" ");}結果:
Node{num=8} Node{num=4} Node{num=5} Node{num=2} Node{num=9} Node{num=6} Node{num=7} Node{num=3} Node{num=1}
六、完整代碼
public class BinaryTreeDemo {public static void main(String[] args) {Node root = new Node(1);Node n2 = new Node(2);Node n3 = new Node(3);Node n4 = new Node(4);Node n5 = new Node(5);Node n6 = new Node(6);Node n7 = new Node(7);Node n8 = new Node(8);Node n9 = new Node(9);root.left = n2;root.right = n3;n2.left = n4;n2.right = n5;n3.left = n6;n3.right = n7;n4.left = n8;n6.right = n9;preOrder(root);System.out.println();infixOrder(root);System.out.println();postOrder(root);}public static void preOrder(Node root){if(root == null){return;}System.out.print(root+" ");preOrder(root.left);preOrder(root.right);}public static void infixOrder(Node root){if(root == null){return;}infixOrder(root.left);System.out.print(root+" ");infixOrder(root.right);}public static void postOrder(Node root){if(root == null){return;}postOrder(root.left);postOrder(root.right);System.out.print(root+" ");} }//節點 class Node{int num;Node left;Node right;public Node(int num) {this.num = num;}@Overridepublic String toString() {return "Node{" +"num=" + num +'}';} }總結
以上是生活随笔為你收集整理的二叉树的前序、中序和后序遍历介绍及案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基数排序算法图解分析
- 下一篇: 图:DFS(深度优先搜索)图解分析代码实