劍指Offer 面試題19 映象二叉樹

2021-07-25 16:31:00 字數 933 閱讀 9914

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

}以題目中的兩棵樹為例:

就是先序遍歷這棵樹,如果當前正在遍歷的節點有子結點(無論是左還是右),就交換兩個子節點,當交換完所有的非葉子結點的左右子結點的時候,就得到了樹的映象.

具體過程如下所示:

注意6和10交換之後,第三層結點的排列順序

遞迴實現:

public void mirror(treenode root) 

//swap

treenode tmpnode=root.left;

root.left=root.right;

root.right=tmpnode;

if(root.left!=null)

if(root.right!=null)

}

非遞迴實現:

public void mirror(treenode root) 

//用於存放結點

stack stack=new stack();

stack.push(root);

while(!stack.isempty())

//將左節點入棧

if(node.left!=null)

//將右節點入棧

if(node.right!=null)}}

劍指Offer 面試題19 二叉樹的映象

二叉樹的映象 請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000,n代表將要輸入的二叉樹節點的個數 節點從1開始編號 接下來一行有n個數字,代表第i個二叉樹節點的元素的值。接下來有n行,每...

劍指offer面試題19 二叉樹的映象

解題思路 1 遞迴實現 利用中序遍歷的思想,在遍歷到每乙個節點的同時,如果這個節點不為空或者這個節點不為葉子節點,將其看做根節點,交換其左右子樹的指標的位置。直到遞迴返回到根節點為止,形成二叉樹的映象。class treenode 求二叉樹的映象 public class solution 葉子節點...

劍指offer 面試題19 二叉樹的映象

題目 操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5 1 遞迴方法 struct treenode class solution 分析 先序遍歷這棵樹,如果遍歷到的結點有子節點,就交換它的子結點。當交...