二叉樹遍歷方式

2021-09-12 10:21:09 字數 1288 閱讀 1384

先序遍歷:根------左子樹-------右子樹

遞迴版本

public

static

void

preprint(treenode root)

非遞迴版本

public

static

void

preorder(treenode root)

if (!s.empty())

}}

中序遍歷:左子樹-----根-----右子樹

遞迴版本

public

static

void

inprint(treenode root)

非遞迴版本

public

static

void

inorder(treenode root)

if (!s.empty())

}}

後序遍歷:左子樹-----右子樹-----根

遞迴版本

public

static

void

postprint(treenode root)

非遞迴版本

後序遍歷的非遞迴應該比前面兩種遍歷的非遞迴要複雜些,當然這裡我們還是需要借助棧來實現。由於後序遍歷是左-----右-----根,所以在入棧的時候,應該倒著放,也就是根-----右-----左,這樣當出棧的時候才能保證正確的順序。入棧我們知道了,出棧的時候應該什麼時候出呢?兩種情況:1、如果當前棧頂左右孩子都為null,2、如果上乙個出棧的元素是當前棧頂元素的孩子結點。所以我們需要定義乙個變數用來執行上乙個出棧的節點。

public

static

void

postorder(treenode root)

else

}}

層序遍歷:從最上面根那層開始,依次從上往下,從左往右遍歷。

public

static

void

levelprint(treenode root)

}

posted @

2018-08-16 08:54

neu_張康 閱讀(

...)

編輯收藏

二叉樹幾種遍歷方式

一 基本概念 每個結點最多有兩棵子樹,左子樹和右子樹,次序不可以顛倒。性質 1 非空二叉樹的第n層上至多有2 n 1 個元素。2 深度為h的二叉樹至多有2 h 1個結點。滿二叉樹 所有終端都在同一層次,且非終端結點的度數為2。在滿二叉樹中若其深度為h,則其所包含的結點數必為2 h 1。完全二叉樹 除...

二叉樹遍歷方式彙總

include using namespace std struct bitreenode bitreenode init tree vector nums else return root void pre order r bitreenode root void in order r bitre...

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...