二叉樹的四種遍歷(前中後序和層序)及其基礎操作

2021-10-06 12:12:59 字數 2170 閱讀 5180

前序(先序):根 左 右

中序:左 根 右

後續:左 右 根

public

static

void

preorder

(node root)

system.out.

print

(root.val+

" ")

;preorder

(root.left)

;preorder

(root.right);}

public

static

void

inorder

(node root)

inorder

(root.left)

; system.out.

print

(root.val+

" ")

;inorder

(root.right);}

public

static

void

postorder

(node root)

postorder

(root.left)

;postorder

(root.right)

; system.out.

print

(root.val+

" ")

;}

思想:

//結點個數等於根節點+左子樹的節點個數+右子樹的節點個數

return1+

size

(root.left)

+size

(root.right)

;}

//遍歷樹,將問題拆分成求root.left的葉子節點個數+root.right的葉子節點個數

public

static

intleftsize

(node root)

if(root.left==null&&root.right==null)

return

leftsize

(root.left)

+leftsize

(root.right)

;}

//如果k<1,只能是空樹,直接返回0

//如果k==1;說明只有乙個根節點,返回1

//第k層的節點個數=左子樹的k-1層節點個數+右子樹的(k-1)節點個數

public

static

intklevelsize

(node root,

int k)

if(k==1)

return

klevelsize

(root.left,k-1)

+klevelsize

(root.right,k-1)

;}

//如果找到了返回引用,如果不存在返回null

node find

(node root,

int val)

if(root.val==val)

node result=

find

(root.left,val);if

(result!=null)

return

find

(root.right,val)

;}

class

node

}public

class

testtree

二叉樹的前中後序 層序遍歷以及重建

class treenode def init self,x self.val x self.left none self.right none根 左 右,前中後都是指的是根,左右的關係永遠是先左後右 1 遞迴方法 這個是通用寫法,對於中序和後序,僅需稍微調整一下 詳情看後面 def preord ...

二叉樹的四種遍歷(先中後序,層次遍歷)

先序遍歷 preorder 的操作過程如下 若二叉樹為空,則什麼也不做 若二叉樹非空 typedef struct bitnodebitnode,bitree 先序遍歷 void preorder bitree t 中序遍歷 inorder 的操作過程如下 若二叉樹為空,則什麼也不做 若二叉樹非空 ...

二叉樹的遍歷(前,中,後,層序)

二叉樹的遍歷是指從根節點出發,按照某種次序依次訪問二叉樹中所有節點,使得每個節點僅被訪問一次 前序遍歷 若二叉樹為空,則空操作返回,否則先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹。結果是 abdghceif 中序遍歷 若樹為空,則空操作返回,否則從根節點開始 注意並不是先訪問根節點 中序遍歷...