Maximum Depth of N-ary Tree
阿新 • • 發佈:2018-12-16
Given a n-ary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
For example, given a 3-ary
tree:
We should return its max depth, which is 3.
Note:
- The depth of the tree is at most
1000
- The total number of nodes is at most
5000
.
給定一個N叉樹,找到其最大深度。
最大深度是指從根節點到最遠葉子節點的最長路徑上的節點總數。
例如,給定一個 3叉樹
:
我們應返回其最大深度,3。
說明:
- 樹的深度不會超過
1000
。 - 樹的節點總不會超過
5000
。
題解:此題是二叉樹的變形,求多叉樹的樹高。這道題非常巧妙,可以利用佇列這個特殊的資料結構來實現層次遍歷,在對每一層進行掃描完後,樹高加1的操作來實現。
public int maxDepth(Node root) //層次遍歷 { if(root == null) return 0; int res = 0; Queue<Node> queue = new LinkedList<>(); queue.add(root); while(!queue.isEmpty()) { int levelNum = queue.size(); res++; for(int i = 0; i < levelNum; i++) { Node temp = queue.poll(); if(temp.children != null) { for(Node ele : temp.children) queue.add(ele); } } } return res; }
層次遍歷在解決求樹高,按“之字形”掃描樹,都可以考慮用層次遍歷來解。對二叉樹的稍微變形,也是一種非常重要的靈活應變。