劍指offer 二叉樹的映象

2021-10-02 01:58:23 字數 1150 閱讀 9309

題目描述

操作給定的二叉樹,將其變換為源二叉樹的映象。

輸入描述

參考思路

要將二叉樹轉化為映象二叉樹,關鍵就是交換根結點的左右子樹,並且遞迴所有的結點(每乙個根結點與左右子樹),來實現二叉樹的映象操作。

參考**

/**

public class treenode }*/

public

class

solution

treenode tmpnode = root.right;

root.right = root.left;

root.left = tmpnode;

mirror

(root.left)

;mirror

(root.right);}

}

總結注意下面兩段**的區別:

第乙個建立的臨時結點tmpnode指向root,第二個指向root.right。由於程式過程中需要對root進行修改,如果使用第一種會導致tmpnode也一起發生改變,導致不能達到想要的效果;而第二種中tmpnode沒有發生改變,可以使用。

**1:

treenode tmpnode = root;

root.right = tmpnode.left;

root.left = tmpnode.right;

mirror

(root.left)

;mirror

(root.right)

;

**2:

treenode tmpnode = root.right;

root.right = root.left;

root.left = tmpnode;

mirror

(root.left)

;mirror

(root.right)

;

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5 這道題目就是交換樹的左右節點之後,遞迴呼叫。不遞迴的方法我覺得可以考慮使用層次遍歷那樣的佇列式方法,不過太麻煩了吧。coding utf 8 class...

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5交換左右節點,遍歷左節點,右節點,求映象 class treenode def init self,item self.val item self.lef...

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。遞迴判斷是否為空 不為空交換左右子樹 左子樹呼叫 右子樹呼叫。兩種寫法 coding utf 8 class treenode def init self,x self.val x self.left none self.right none class ...