二叉樹遍歷分為三種:前序、中序、後序(取決於根節點):
另外還有一種層次遍歷,即每一層都從左向右遍歷。
譬如,對於下面的二叉樹
前序遍歷:abdefgc
中序遍歷:debgfac
後序遍歷:edgfbca
層次遍歷:abcdfeg
因為樹的定義本身就是遞迴定義,因此採用遞迴的方法去實現樹的三種遍歷不僅容易理解而且**很簡潔。而對於樹的遍歷若採用非遞迴的方法,就要採用棧去模擬實現。在三種遍歷中,前序和中序遍歷的非遞迴演算法都很容易實現,非遞迴後序遍歷實現起來相對來說要難一點
go實現
// 先序遍歷,用棧實現
func preorderbinarytree1(root *binarytreenode)
stack := *binarytreenode{}
top := -1
top++
for top >= 0
if item.lchild != nil }}
go實現
// 中序遍歷,用棧實現
func inorderbinarytree1(root *binarytreenode)
stack := *binarytreenode{}
top := -1
for top >= 0 || root != nil
item := stack[top]
stack = stack[:top]
top-- // 出棧
fmt.print(item.data)
if item.rchild != nil }}
// 後序遍歷,用棧實現
func postorderbinarytree1(root *binarytreenode)
stack := *binarytreenode{}
top := -1
var p *binarytreenode = nil
flag := -1
for root != nil
flag = 1
p = nil
for top != -1 && flag > 0 else
}for top != -1
flag = 1
p = nil
for top != -1 && flag > 0 else }}
}
二叉樹的基本運算2
二叉樹遍歷分為三種 前序 中序 後序 取決於根節點 另外還有一種層次遍歷,即每一層都從左向右遍歷。譬如,對於下面的二叉樹 前序遍歷 abdefgc 中序遍歷 debgfac 後序遍歷 edgfbca 層次遍歷 abcdfeg 因為樹的定義本身就是遞迴定義,因此採用遞迴的方法去實現樹的三種遍歷不僅容易...
二叉樹 基本運算
一 括號表示法建二叉樹 核心 void make btree print b view code 二 查詢節點 核心 btnode find node btnode b1,char x 查詢節點數值等於x的節點 view code 三 求樹高 核心 int get high const btnode...
二叉樹的基本運算
今天資料結構實驗課,做實驗,二叉樹的基本運算,題目要求挺長的,上課坐著沒事幹,寫了一點,放這以後還能看看。呵呵 題目要求 問題描述 建立一棵二叉樹,試程式設計實現二叉樹的如下基本操作 1.按先序序列構造一棵二叉鍊錶表示的二叉樹t 2.對這棵二叉樹進行遍歷 先序 中序 後序以及層次遍歷,分別輸出結點的...