二叉樹的映象

2021-10-09 00:02:19 字數 1127 閱讀 9038

例如輸入:

4/   \

2     7

/ \   / \

1   3 6   9

映象輸出:

4/   \

7     2

/ \   / \

9   6 3   1

2.1  思路分析

若樹為空,直接返回null;

定義兩個臨時變數leftroot和rightroot,分別儲存當前結點的左結點和右結點;

將當前根結點的左結點設定為rightroot,右結點設定為leftroot,最後返回root;

過程就是從下到上、完成右子樹的映象,然後完成左子樹的映象,最後完成根結點的映象。

2.2  **實現

class solution 

treenode leftroot = mirrortree(root.right);

treenode rightroot = mirrortree(root.left);

root.left = leftroot;

root.right = rightroot;

return root;

}}

2.3  複雜度分析

3.1  思路分析

當root為null時,返回null;

新建輔助棧,並將根結點入棧;

開始迴圈,當棧不為空時,彈出結點node,新增node的左、右子結點到棧中,交換node的左右子結點;

最後返回根結點root。

3.2  **實現

class solution 

return root;

}}

3.3  複雜度分析

4.1  思路分析

4.2  **實現

class solution 

return root;

}}

映象二叉樹

映象二叉樹與二叉樹的區別是左右孩子對於根節點的相對大小剛好相反不用建立映象樹,通過對原樹的映象便歷,即可得到所需的東西。後序 樹 lr根,映象 rl根。如果創立映象二叉樹,insert 改一下即可,這樣可以把preordermirror 等去掉。對於遍歷後的排序放到vector陣列裡便於比較,而且進...

映象二叉樹

題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。思路 1 獲取源二叉樹的映象,將源二叉樹的左右子樹交換即可 2 主要步驟 若二叉樹為空,直接返回 若二叉樹不為空,交換其左右子樹 遞迴的將二叉樹的其他結點進行交換 public class treenode public class soluti...

二叉樹12 二叉樹的映象

題目 操作給定的二叉樹,將其變換為源二叉樹的映象。輸入描述 思路 首先要理解業務邏輯,何為映象?所謂映象就是對於任何乙個結點,將其左右子樹進行交換即可。對於一棵以root為根結點的二叉樹,要將其映象,首先將其左右子樹 root.left為根的子樹 和 root.right為根的子樹 進行映象,然後將...