二叉樹的鏡像(Java)

之前一直不敢做二叉樹的,感覺賊難,今天兩分鐘做出了,自己不敢相信🤦‍竟然這麼簡單。OMG!真不知道我之前是怎麼想的。

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

什麼是二叉樹的鏡像,你是不是還不清楚?上圖👇
在這裏插入圖片描述
我們先來簡化問題:
1.只有根結點,不需要改變
2.只有根結點,一個左孩子,一個右孩子,左右孩子交換即可
3.多個結點,即左孩子和右孩子還有孩子結點,我們可以看出先是交換底層對應的左右孩子,往根結點去。

思路:
1.根結點爲null,直接返回走人
2.🔎尋找最底層的結點,交換對應的左右結點
3.交換根結點的左右結點
上代碼

public static void Mirror(TreeNode root) {
    if(root != null){
        if(root.left != null){
            Mirror(root.left);
        }
        if(root.right != null){
            Mirror(root.right);
        }
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
    }
}

注意,有人會問了
在這裏插入圖片描述
看好,我們的臨時結點是 TreeNode 型,不是簡單的將左右結點的值val 交換的。所以才能在交換了10和6之後,他們對應的左右子樹會交換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章