代码实现计算二叉树每个结点的度数
时间: 2024-01-21 07:19:16 浏览: 167
计算二叉树每个节点的度数可以通过遍历二叉树来实现。二叉树的度数是指一个节点拥有的子节点数目,可以是0、1或2。下面是一个示例代码实现:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.left_child = None
self.right_child = None
def get_node_degree(node):
if node is None:
return 0
degree = 0
if node.left_child is not None:
degree += 1
if node.right_child is not None:
degree += 1
return degree
def get_tree_degree(root):
if root is None:
return
queue = [root]
while len(queue) > 0:
node = queue.pop(0)
degree = get_node_degree(node)
print("Node: {0} Degree: {1}".format(node.data, degree))
if node.left_child is not None:
queue.append(node.left_child)
if node.right_child is not None:
queue.append(node.right_child)
```
上述代码中,我们首先定义了一个`Node`类来表示二叉树的节点。`get_node_degree`函数用于计算一个节点的度数,其实现中判断该节点的左右子节点是否存在,从而得到该节点的度数。`get_tree_degree`函数用于遍历整棵二叉树,其实现中使用一个队列来存储待遍历的节点。对于每个节点,我们调用`get_node_degree`函数来计算其度数,并输出结果。同时,我们还将该节点的左右子节点加入队列中,以便后续遍历。
下面是一个示例二叉树及其运行结果:
```python
# 示例二叉树
root = Node(1)
root.left_child = Node(2)
root.right_child = Node(3)
root.left_child.left_child = Node(4)
root.left_child.right_child = Node(5)
root.right_child.left_child = Node(6)
root.right_child.right_child = Node(7)
# 计算每个节点的度数
get_tree_degree(root)
```
输出结果为:
```
Node: 1 Degree: 2
Node: 2 Degree: 2
Node: 3 Degree: 2
Node: 4 Degree: 0
Node: 5 Degree: 0
Node: 6 Degree: 0
Node: 7 Degree: 0
```
阅读全文