编写算法,在以二叉链表存储的二叉树中,求度为二的结点的个数代码
时间: 2024-02-13 12:59:54 浏览: 80
以下是求度为二的节点数的二叉树遍历代码实现:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def count_degree_two(root):
if root is None:
return 0
count = 0
if root.left is not None and root.right is not None:
count += 1
count += count_degree_two(root.left)
count += count_degree_two(root.right)
return count
```
这里我们使用了递归来实现,如果当前节点的左右子节点均不为空,则该节点的度为二,同时递归遍历左右子树,将度为二的节点数累加起来返回即可。
相关问题
编写数据结构算法,在以二叉链表存储的二叉树中,求度为 2的结点的个数。
可以通过递归地遍历二叉树,统计度为2的节点个数。具体实现如下:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def count_degree_two_nodes(root):
if not root:
return 0
count = 0
if root.left and root.right: # 如果该节点的左右子树均存在,则度数为2
count += 1
count += count_degree_two_nodes(root.left) # 递归遍历左子树
count += count_degree_two_nodes(root.right) # 递归遍历右子树
return count
```
其中,`TreeNode` 是二叉树节点的定义,`count_degree_two_nodes` 是统计度为2的节点个数的函数。对于当前节点,如果它的左右子树均存在,则它的度数为2;然后递归遍历左右子树,将它们的度数为2的节点个数加起来返回即可。
编写算法,在以二叉链表存储的二叉树中,统计二叉树中叶子结点个数
可以使用递归的方式来统计二叉树中叶子节点的个数。具体算法如下:
1. 如果二叉树为空,则叶子节点个数为。
2. 如果二叉树只有一个节点,则叶子节点个数为1。
3. 否则,递归计算左子树和右子树中叶子节点的个数,然后将它们相加即可。
以下是具体的代码实现:
```
int countLeafNodes(TreeNode* root) {
if (root == nullptr) {
return ;
}
if (root->left == nullptr && root->right == nullptr) {
return 1;
}
int leftCount = countLeafNodes(root->left);
int rightCount = countLeafNodes(root->right);
return leftCount + rightCount;
}
```
其中,`TreeNode` 表示二叉树节点的结构体,包含左右子节点指针和节点值等信息。
阅读全文