遍历二叉树或求二叉树叶子节点数或求二叉树深度
时间: 2024-11-28 14:17:47 浏览: 21
在C语言中,遍历二叉树有几种常见的方法:
1. **前序遍历**(根-左-右): 访问当前节点,然后访问左子树,最后访问右子树。
2. **中序遍历**(左-根-右): 先访问左子树,然后访问当前节点,最后访问右子树。
3. **后序遍历**(左-右-根): 先访问左子树,再访问右子树,最后访问当前节点。
4. **层序遍历**(按层次顺序): 使用队列辅助,先将根节点加入,然后取出节点并将其左右子节点依次加入。
计算二叉树的叶子节点数,可以在遍历时每遇到一个NULL值(代表空的子节点),就增加计数器1。
求二叉树的深度(最大层级),可以采用递归的方式,对于每一个节点,其深度等于它的左、右子树的最大深度加1,取两者中的较大值。
以下是求叶子节点数和深度的基本思路:
```c
int countLeaves(TreeNode* root) {
if (root == NULL) return 0; // 空节点计为0
if (root->left == NULL && root->right == NULL) return 1; // 叶子节点计为1
return countLeaves(root->left) + countLeaves(root->right);
}
int depthOfTree(TreeNode* root) {
if (root == NULL) return 0;
return 1 + max(depthOfTree(root->left), depthOfTree(root->right));
}
```
阅读全文