每日一道算法:2020年6月22-二叉樹翻轉

問題描述

翻轉一棵二叉樹。
示例:
輸入:
在這裏插入圖片描述

輸出:
在這裏插入圖片描述

備註:
這個問題是受到 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章