輸入乙個二叉樹,輸出其二叉樹的映象。
注:映象為二叉樹的所有左右節點交換。
二叉樹的映象這種題目在面試中經常會被考到,劃重點啦!!!這種題目經典的思路有兩種。其一是傳統遞迴;第二種就是非遞迴解法。
遞迴法沒有什麼太好說的,既然是左右兩個節點交換,那麼就是所見即所得,利用遞迴實現交換就完事兒了。**見下:
public
static
void
mirror
(treenode root)
treenode temp = root.left;
root.left = root.right;
root.right=temp;
mirror
(root.right)
;mirror
(root.left)
;}
在二叉樹遍歷中,bfs廣度優先遍歷是一種非常實用的遍歷方式。它將二叉樹分為一層又一層,那麼涉及到二叉樹分層操作的題目幾乎都可以用bfs來解決一二。每層遍歷,然後將每個節點的左右節點交換,從而實現二叉樹的映象。具體**見下:
public
class
solution
queue.
add(root)
; treenode curr,temp;
while
(!queue.
isempty()
)}}
遞迴這種方法和棧、佇列這兩種資料結構,在二叉樹的遍歷以及很多操作中應用廣泛。 劍指Offer 18 二叉樹的映象
操作給定的二叉樹,將其變換為源二叉樹的映象。思路 這道題用遞迴做最合適不過,其思路很簡單,既然是遞迴那函式的開始一定有跳出遞迴的條件,條件就是當遍歷到樹節點為空時,就跳出遞迴。剩下的就是交換根節點左右子節點了,在交換完畢之後要進入到子節點的子樹中對子樹再進行左右節點的交換,如此迴圈下去,如下 sol...
劍指Offer 18 二叉樹的映象
請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象 先在樹中交換根節點的兩個子結點,之後需要交換著兩個結點的左右子結點。先前序遍歷這棵樹的每個結點,如果遍歷到的結點有子結點,就交換它的兩個子結點。當交換完所有非葉子結點的左右子結點之後,就得到了樹的映象。coding utf 8 class tree...
劍指 JZ18二叉樹的映象
題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5解題思路 遞迴 首先拿到這道題,因為他是要在樹的結構上做改動,而不是輸出乙個映象序列,因此需要遞迴對樹進行改變。首先從根節點開始,將根節點的左孩...