劍指Offer 二叉樹的映象

2021-06-22 05:30:19 字數 802 閱讀 4531

輸入乙個二叉樹,輸出它的映象。

映象示例如下圖:

遞迴解法:

以前序編列二叉樹的每個結點,如果遍歷到的結點有子節點,交換左右子節點,當交換完所有非葉子結點的左右子節點之後,就得到了二叉樹的映象。

非遞迴解法:

使用佇列來儲存結點,每次取出佇列隊首結點,如果此節點不為空,則交換其左右子節點,按交換後的順序將其左右子節點新增到隊尾,直到佇列中再無元素為止。

遞迴解法:

/**

* 使用遞迴的方法將乙個二叉樹變成其映象

* * @param root

* @return

*/public static treenode getbinarytreemirrorrecursively(treenode root)

非遞迴解法:

/**

* 使用迴圈的方法將乙個二叉樹變成其映象

* * @param root

* @return

*/public static treenode getbinarytreemirrorbyloop(treenode root)

} return root;

}

劍指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 ...