二叉树求叶子结点数代码
计算二叉树的叶子节点数可以使用递归的方法来实现。我们定义一个函数来递归地遍历二叉树,并计算叶子节点的数量。
```
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public class BinaryTree {
public int countLeafNodes(TreeNode root) {
if (root == null) {
return 0; // 空树没有叶子节点
}
if (root.left == null && root.right == null) {
return 1; // 只有一个节点的树的叶子节点数量为1
}
int leftLeaves = countLeafNodes(root.left); // 递归计算左子树的叶子节点数量
int rightLeaves = countLeafNodes(root.right); // 递归计算右子树的叶子节点数量
return leftLeaves rightLeaves; // 返回左子树和右子树叶子节点数量之和
}
}
```
使用上述的代码,我们可以计算任意二叉树的叶子节点数。对于给定的二叉树,可以先构造二叉树的结构,然后调用`countLeafNodes`函数来计算叶子节点的数量。
下面是一个示例,演示了如何使用上述代码来计算二叉树的叶子节点数:
```
public class Main {
public static void main(String[] args) {
// 构造二叉树
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
// 计算叶子节点数
BinaryTree binaryTree = new BinaryTree();
int leafCount = binaryTree.countLeafNodes(root);
// 输出结果
System.out.println("叶子节点数:" leafCount);
}
}
```
运行上述代码,输出结果为:
```
叶子节点数:4
```
这表示给定的二叉树有4个叶子节点。
希望这个示例代码对你有所帮助!如果有其他问题,请随时提问。