gpt4 book ai didi

java - 递归计算二叉树中的内部节点(父节点)

转载 作者:行者123 更新时间:2023-12-01 12:49:26 27 4
gpt4 key购买 nike

我需要创建一个递归方法,该方法将二叉搜索树的根节点作为参数。此递归方法将返回整个二叉搜索树中内部节点总数的 int 值。

这是我到目前为止所拥有的:

int countNrOfInnerNodes (Node node) {
if(node == null) {
return 0;
}
if (node.left != null && node.right != null){
return 1;
}
return countNrOfInnerNodes(node.left)+countNrOfInnerNodes(node.right)
}
}

还有更好的办法吗?我还坚持寻找迭代解决方案。

最佳答案

这是修复的递归方法:

int countNrOfInnerNodes (Node node) {
if(node == null) {
return 0;
}

if (node.left == null && node.right == null) {
// not an inner node !
return 0;
} else {
// the number of inner nodes in the left sub-tree + the number of inner
// nodes in the right sub-tree, plus 1 for this inner node
return countNrOfInnerNodes(node.left) + countNrOfInnerNodes(node.right) + 1;
}
}

这是迭代方法:

int countNrOfInnerNodes(Node node) {
if (node == null)
return 0;

Stack<Node> nodesToCheck = new Stack<Node>();

nodesToCheck.push(node);
int count = 0;

while (!nodesToCheck.isEmpty()) {
Node checkedNode = nodesToCheck.pop();
boolean isInnerNode = false;

if (node.left != null) {
isInnerNode = true;
nodesToCheck.push(node.left);
}

if (node.right != null) {
isInnerNode = true;
nodesToCheck.push(node.right);
}

if (isInnerNode)
count++;
}

return count;
}

关于java - 递归计算二叉树中的内部节点(父节点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com