在一棵二叉树中,给定节点数量值m,求树中的哪一层具有m个节点,并返回层数。如果同时存在多层具有m个节点,则返回数值最小的层数;如果没有节点数量为m的层,则返回0。按先序遍历序列建立链式存储结构的二叉树。
时间: 2023-05-02 08:05:41 浏览: 66
题目描述:在一棵二叉树中,给定节电数量m,求树中的哪一层具有m个节点,并返回层数。如果同时存在多层具有m个节点,则返回层数最小的层。如果没有节点数量为m的层,则返回0。
解题思路:遍历二叉树,使用层序遍历,统计每层的节点数量,找到第一层节点数量为m的层即可。如果同时存在多层,取最小的层数。如果没有发现节点数量为m的层,则返回0。
代码实现:
```
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def findLevel(self, root, m):
"""
:type root: TreeNode
:type m: int
:rtype: int
"""
if not root:
return 0
level = 0
queue = [root]
while queue:
level += 1
size = len(queue)
count = 0
for i in range(size):
node = queue.pop(0)
count += 1
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
if count == m:
return level
return 0
```