利用分治法计算二叉树中分支点的个数 java语言实现
时间: 2024-09-23 17:05:48 浏览: 41
用分治法求最大最小值JAVA为例
在Java中,我们可以利用分治法(Divide and Conquer)的思想来解决二叉树中分支点(也称为非叶节点)的计数问题。这种算法通常采用递归的方式来遍历二叉树。
首先,我们需要定义一个函数,例如`countBranchPoints(TreeNode node)`,它接受一个二叉树节点作为输入:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public int countBranchPoints(TreeNode root) {
if (root == null) {
return 0; // 如果节点为空,返回0
} else {
// 对左子树和右子树分别进行递归调用
int leftBranches = countBranchPoints(root.left);
int rightBranches = countBranchPoints(root.right);
// 当前节点如果是分支点,则返回1,否则返回0
return leftBranches + rightBranches + (root.left != null && root.right != null ? 1 : 0);
}
}
```
这个函数的工作原理是:对于每个非叶子节点(即分支点),它的左右子树都会有一个分支点数,加上它自身(如果它是分支点)。当遇到叶子节点时,它没有分支,所以返回0。
阅读全文