日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二叉树的前序、中序和后序遍历介绍及案例

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树的前序、中序和后序遍历介绍及案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、介紹
  • 二、建立二叉樹
    • 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 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;}

三、前序遍歷

使用遞歸的方法進行前序遍歷,直接上代碼。

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 +'}';} }

總結

以上是生活随笔為你收集整理的二叉树的前序、中序和后序遍历介绍及案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。