二叉樹的基本運算2

2021-09-12 18:15:24 字數 1394 閱讀 6633

二叉樹遍歷分為三種:前序、中序、後序(取決於根節點):

另外還有一種層次遍歷,即每一層都從左向右遍歷。

譬如,對於下面的二叉樹

前序遍歷: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.對這棵二叉樹進行遍歷 先序 中序 後序以及層次遍歷,分別輸出結點的...