二叉樹的各種遍歷姿勢

2021-10-06 07:17:19 字數 1367 閱讀 8760

public

static

class

treenode

public

static list

view

(treenode root, list

result)

result.

add(root.val)

;// 根

view

(root.left, result)

;// 左

// result.add(root.val);

view

(root.right, result)

;// 右

// result.add(root.val);

return result;

}

由根的訪問時機可以得到不同的遍歷順序,根左右為先序,左根右為中序,左右根為後序

public

static list

preinorder

(treenode root)

else

}return result;

}

入棧和左行之間訪問節點,得到的是先序

出棧和右行之間訪問節點,得到的是中序

public

static list

postorder

(treenode root)

if(null != cur.right)

// 當前節點入主棧

stack.

push

(cur);}

while

(!stack.

isempty()

)return result;

}

從輔助棧取出乙個節點,依次將其左節點–>右節點壓入輔助棧,再將本身壓入主棧,迴圈至輔助棧空。

最後從主棧取出,根據棧性質易知得到的是左–>右–>根的順序,即為後序。

public

static list

levelorder

(treenode root)

queue.

add(root.val)

;while

(!queue.

isempty()

)if(null != e.right)

}return result;

}

二叉樹的各種遍歷

二叉樹 struct treenode void createtree treenode root 樹遞迴先序遍歷 void preorder treenode root 現將根節點入棧,然後以棧空為條件不斷出棧,每齣棧乙個元素,將其右孩子壓入棧,左孩子壓入棧 void nonrecursionpr...

二叉樹及其各種遍歷

樹形結構是一類重要的非線性資料結構,其中以樹和二叉樹最為常用。二叉樹是每個結點最多有兩個子樹的有序樹。通常子樹的根被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用作二叉查詢樹和二叉堆或是二叉排序樹。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 ...

二叉樹 各種遍歷演算法

include include include using namespace std 二叉樹結點 typedef struct bitnodebitnode,bitree 按先序序列建立二叉樹 int createbitree bitree t else return 0 輸出 void visi...