天天看點

劍指offer系列之十七:二叉樹的鏡像

題目描述

操作給定的二叉樹,将其變換為源二叉樹的鏡像。

輸入描述:

二叉樹的鏡像定義:源二叉樹

8

/ \

6 10

/ \ / \

5 7 9 11

鏡像二叉樹

10 6

11 9 7 5

仔細觀察原二叉樹與鏡像二叉樹,可以發現鏡像二叉樹實際上就是把每個節點的左右孩子結點進行了交換,比如在周遊到8這個節點時候,首先交換其左右孩子6和10,其對應的子樹也應該進行交換。是以我們可以采用前序周遊的方法進行操作,每當遇到一個結點的時候,首先判斷其是否有左右孩子(有其中之一即可),如果有的話,就交換其左右孩子,然後繼續周遊其左右子樹,隻要不為空就繼續交換其左右孩子節點(在交換具有孩子結點的結點的時候,其孩子結點也一并被交換了)。下面是基于這種思路的實作代碼(已被牛客ac):