請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。
例如輸入:
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)二叉樹,交換每個節點的左 / 右子節點,即可生成二叉樹的映象。
演算法流程:
終止條件:當節點root為空時(即越過葉子節點),則返回null;
遞推工作:
初始化節點tmp,用於暫存root的左子節點;
開啟遞迴右子節點mirrortree(root.right),並將返回值作為root的左子節點。
開啟遞迴左子節點mirrortree(tmp),並將返回值作為root的右子節點。
複雜度分析:利用棧(或佇列)遍歷樹的所有節點node,並交換每個node的左 / 右子節點。
演算法流程:
特例處理:當root為空時,直接返回null;
迴圈交換:當棧stack為空時跳出;
出棧:記為node;
新增子節點:將node左和右子節點入棧;
交換:交換node的左 / 右子節點。
返回值:返回根節點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 題相同 總結上面的過程,我們可以得出求一棵樹映...
二叉樹12 二叉樹的映象
題目 操作給定的二叉樹,將其變換為源二叉樹的映象。輸入描述 思路 首先要理解業務邏輯,何為映象?所謂映象就是對於任何乙個結點,將其左右子樹進行交換即可。對於一棵以root為根結點的二叉樹,要將其映象,首先將其左右子樹 root.left為根的子樹 和 root.right為根的子樹 進行映象,然後將...