JZ 27 二叉樹的映象(遞迴 棧)

2021-10-21 16:57:05 字數 1600 閱讀 6539

方法二-輔助棧(bfs)

從根結點開始對樹進行遍歷,從葉結點翻轉,若當前結點的左右兩棵子樹都已經翻轉完畢,則只需要交換兩棵子樹的位置。

遞推過程:

暫存 roo

troot

root

的左子節點;

開啟遞迴 roo

troot

root

的右子樹 mir

rort

ree(

root

.rig

ht)mirrortree(root.right)

mirror

tree

(roo

t.ri

ght)

,並將返回值作為 roo

troot

root

的左子節點;

開啟遞迴 roo

troot

root

的左子樹 mir

rort

ree(

root

.lef

t)mirrortree(root.left)

mirror

tree

(roo

t.le

ft),並將返回值作為 roo

troot

root

的右子節點;

終止條件:當前節點 roo

troot

root

為空,返回 nul

lnull

null

返回值:當前節點 roo

troot

root

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

}

利用棧(或佇列)遍歷樹的所有節點,交換每個節點的左右子節點

演算法流程:

當 root

root

root

為空時,直接返回 nul

lnull

null

初始化棧 stk

stkst

k,將根節點 roo

troot

root

壓棧迴圈交換,當棧為空時跳出迴圈:

將棧頂節點出棧,記為 nod

enode

node

;將 nod

enode

node

的左右子節點入棧;

交換 nod

enode

node

的左右子節點

返回根節點 roo

troot

root

class

solution

return root;

}}

27 二叉樹的映象

請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。例如輸入 4 2 7 1 3 6 9 映象輸出 4 7 2 9 6 3 1 示例 1 輸入 root 4,2,7,1,3,6,9 輸出 4,7,2,9,6,3,1 限制 解法 通過畫圖讓自己有乙個清楚的思路,然後使用遞迴的方法進行翻轉。題目比較簡單...

27 二叉樹的映象

請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。例如輸入 4 27 13 69映象輸出 4 72 96 31示例 1 輸入 root 4,2,7,1,3,6,9 輸出 4,7,2,9,6,3,1 限制 0 節點個數 1000注意 本題與主站 226 題相同 總結上面的過程,我們可以得出求一棵樹映...

二叉樹 27題 二叉樹的映象

請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。例如輸入 4 2 7 1 3 6 9 映象輸出 4 7 2 9 6 3 1 示例1 輸入 root 4,2,7,1,3,6,9 輸出 4,7,2,9,6,3,1 限制 0 節點個數 1000根據二叉樹映象的定義,考慮遞迴遍歷 dfs 二叉樹,交換每...