统计二叉树中只有左孩子的结点个数的详细解题思路清晰
时间: 2024-01-28 18:05:16 浏览: 20
首先,我们需要明确什么是只有左孩子的结点。只有左孩子的结点是指一个结点的左孩子存在,右孩子不存在的情况。
接下来,我们可以使用递归的方式来统计二叉树中只有左孩子的结点个数。
具体思路如下:
1. 如果当前结点为空,则返回0。
2. 如果当前结点的左孩子存在,右孩子不存在,则说明当前结点是只有左孩子的结点,个数加1。
3. 递归遍历当前结点的左子树,将左子树中只有左孩子的结点的个数加到当前结点的个数中。
4. 递归遍历当前结点的右子树,将右子树中只有左孩子的结点的个数加到当前结点的个数中。
5. 返回当前结点的个数。
代码实现如下:
```
int countLeftNode(Node* root) {
if(root == NULL) {
return 0;
}
int count = 0;
if(root->left != NULL && root->right == NULL) {
count++;
}
count += countLeftNode(root->left);
count += countLeftNode(root->right);
return count;
}
```
以上就是统计二叉树中只有左孩子的结点个数的详细解题思路。
相关问题
统计二叉树中只有左孩子的结点个数c语言
假设二叉树的结点定义如下:
```C
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
可以使用递归的方式来统计二叉树中只有左孩子的结点个数。具体实现如下:
```C
int countLeftNodes(TreeNode* root) {
if (root == NULL) {
return 0;
}
if (root->left != NULL && root->right == NULL) {
return 1 + countLeftNodes(root->left);
}
return countLeftNodes(root->left) + countLeftNodes(root->right);
}
```
如果当前结点只有左孩子,则返回1加上左子树中只有左孩子的结点个数;否则,分别统计左子树和右子树中只有左孩子的结点个数,并返回它们的和。
统计二叉树中只有左孩子的结点个数代码实现
可以使用递归实现统计二叉树中只有左孩子的结点个数。
具体实现方法如下:
1. 如果当前节点为空,返回0。
2. 如果当前节点只有左孩子,返回1加上递归调用左子树的结果。
3. 如果当前节点有左右孩子,返回递归调用左子树和右子树的结果之和。
代码实现如下所示:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def count_left_children(root):
if not root:
return 0
if root.left and not root.right:
return 1 + count_left_children(root.left)
else:
return count_left_children(root.left) + count_left_children(root.right)
```
其中,TreeNode 是定义二叉树节点的类,count_left_children 函数是统计二叉树中只有左孩子的结点个数的函数。函数中的 root 参数是二叉树的根节点。