方法二-輔助棧(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 二叉樹,交換每...