1. 程式人生 > 實用技巧 >二叉樹最大深度

二叉樹最大深度

題目:

給定一個二叉樹,找出其最大深度。

二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。

說明: 葉子節點是指沒有子節點的節點。

示例:給定二叉樹 [3,9,20,null,null,15,7],

    3
/ \
9 20
/ \
15 7

返回它的最大深度 3 。

解題思路:

DFS(深度搜索優先)

主要思路是從圖中一個未訪問的頂點 V 開始,沿著一條路一直走到底,然後從這條路盡頭的節點回退到上一個節點,再從另一條路開始走到底...,不斷遞迴重複此過程,直到所有的頂點都遍歷完成,它的特點是不撞南牆不回頭,先走完一條路,再換一條路繼續走。

如果我們熟悉深度搜索優先演算法的話,很容易想到用此方法來解這道題。

我們從根節點開始向下遍歷,如果遇到空節點,返回0;否則繼續遍歷左右節點,其最大深度為左右子樹深度的最大值。

程式碼:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func maxDepth(root *TreeNode) int {
    if root == nil {
        return 0
    }
    lhight := maxDepth(root.Left)
    rhight := maxDepth(root.Right)
    return max(lhight, rhight) + 1
}

func max(x int, y int) int {
    if x > y {
        return x
    }else {
        return y
    }
}

  地址:https://mp.weixin.qq.com/s/VCslbRKytGh2ed-ZptNjhg