package com.example.ljia.structure.tree;
import lombok.data;
/** * @ author :samlai
* @ description:遞迴 二叉樹 先序遍歷 中序遍歷 後續遍歷
* 先序遍歷 :根 左 右
* 中序遍歷 :左 根 右
* 後序遍歷 :左 右 根
* 發現規律:這裡的順序是根節點為核心來的
* 原理:
* 利用函式棧來儲存資訊的
* * 以一棵樹為例:
* 1
* 2 3
* 4 5 6
* 列印結果:
前序遍歷 :
1 2 4 5 3 6
中序遍歷 :
4 2 5 1 3 6
後序遍歷 :
4 5 2 6 3 1
* */
@data
public class node
/*** 前序
* @param head
*/public static void preorderrecur(node head)
system.out.print(head.getvalue() + " ");
preorderrecur(head.left);
preorderrecur(head.right);
}/**
* 中序
* @param head
*/public static void inorderrecur(node head)
inorderrecur(head.left);
system.out.print(head.getvalue() + " ");
inorderrecur(head.right);
}/**
* 後序
* @param head
*/public static void posorderrecur(node head)
posorderrecur(head.left);
posorderrecur(head.right);
system.out.print(head.getvalue() + " ");
}public static void main(string args)
}
二叉樹遍歷(先序遍歷 中序遍歷 後續遍歷)
1 先序遍歷也叫做先根遍歷 前序遍歷,可記做根左右 二叉樹父結點向下先左後右 2 首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。非遞迴遍歷 param b public static void prescan...
二叉樹先序遍歷 中序遍歷 後序遍歷
輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...
二叉樹先序遍歷 後序遍歷 中序遍歷
從根部 a 開始,然後開始遍歷左子樹,直接找到 b 檢視 b 有沒有左子樹,有 d,再檢視 d 有沒有子樹,沒有,d 已經是葉子,所以第二個是 d。倒回去,取中 b,第三個數是 b。檢視 b 有沒有右子樹,有 e 檢視 e 有沒有子樹,有 g 左 h 右 所有後面三個數是 egh 先查左子樹,存在繼...