問題描述
翻轉一棵二叉樹。
示例:
輸入:
輸出:
備註:
這個問題是受到 Max Howell 的 原問題 啓發的 :
谷歌:我們90%的工程師使用您編寫的軟件(Homebrew),但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。
Related Topics 樹
解決方案
這是一個非常經典的樹的問題,這個問題很適合用遞歸方法來解決。
算法
反轉一顆空樹結果還是一顆空樹。對於一顆根爲 r,左子樹爲 mbox{right}, 右子樹爲 mbox{left} 的樹來說,它的反轉樹是一顆根爲 r,左子樹爲 mbox{right} 的反轉樹,右子樹爲 mbox{left} 的反轉樹的樹。
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
TreeNode right = invertTree(root.right);
TreeNode left = invertTree(root.left);
root.left = right;
root.right = left;
return root;
}