1.LeetCode 字節跳動 二叉樹深度

題目

二叉樹的深度

// treeNode 當前節點, length 當前節點的深度
    public int getLength(TreeNode treeNode,int length){
        if (treeNode==null){
            return length;
        }
        int leftLength = getLength(treeNode.left,length);
        int rightLength = getLength(treeNode.right,length);
        length = leftLength > rightLength ? leftLength + 1 : rightLength + 1;
        return length;
    }

該方法爲通用方法只要知道當前節點的節點實例,與當前深度,就可以取得該節點下最深分支的深度,如果當前深度爲0,也就是根節點的時候,返回值就是該樹的深度.

引申

求二叉樹是否爲高度平衡的平衡二叉樹(左右兩個分支的深度差的絕對值不超過1)

思路:
求出兩個左右節點,分別求深度,取差的絕對值即可判斷

擴展

這種求法實際上是裝飾者模式的變形的使用,每深入探測一個節點,就在length上加一(裝飾);
如果在TreeNode中定義深度變量,則就會更明顯的展示裝飾者模式的思路

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