【发布时间】:2021-08-01 10:19:28
【问题描述】:
我无法确定每个级别的节点数是否相同。到目前为止的问题和我的代码如下提供
如果树的每一层的节点数相同,则将两棵二叉树称为大小相似
鉴于以下情况:
class TreeNode {
String nodeValue;
TreeNode rightNode;
TreeNode leftNode;
TreeNode(String nodeValue, TreeNode rightNode, TreeNode leftNode) {
this.nodeValue = nodeValue;
this.rightNode = rightNode;
this.leftNode = leftNode;
}
}
这个问题的目的是编写一个函数来验证两棵树的大小是否相似。
如果正确则该函数应返回 true,否则返回 false
我的代码:
//implemented with java
class TreeNode {
String nodeValue;
TreeNode rightNode;
TreeNode leftNode;
TreeNode(String nodeValue, TreeNode rightNode, TreeNode leftNode) {
this.nodeValue = nodeValue;
this.rightNode = rightNode;
this.leftNode = leftNode;
}
//function to return size of node, i.e. number of children
int nodeSize() {
//if node has both left and right child node
if (this.rightNode.nodeValue != null && this.leftNode.nodeValue != null) {
return 2;
//if node has no child nodes
} else if (this.rightNode.nodeValue == null && this.leftNode.nodeValue == null) {
return 0;
//if node just has either left or right child node
} else {
return 1;
}
}
boolean similarSizedTrees(TreeNode firstTree, TreeNode secondTree) {
//if both nodes have no child nodes
if (firstTree.nodeSize() == 0 && secondTree.nodeSize() == 0) {
return true;
}
//if both nodes have at least 1 child node
if (firstTree.nodeSize() != 0 && secondTree.nodeSize() != 0) {
return ((firstTree.nodeSize() == secondTree.nodeSize()) &&
similarSizedTrees(firstTree.leftNode, secondTree.leftNode) &&
similarSizedTrees(firstTree.leftNode, secondTree.rightNode));
}
//
return false;
}
}
我遇到的问题是我的代码没有考虑每个级别的节点数。
【问题讨论】:
-
如果问题是2个二叉树是否相似。那么为什么我们要检查每一层树的节点数呢?
-
大小相似的树和相似的树,这两种是不同的。
-
@BadhanSen 我认为这只是预先给出的相似性的定义,无论它多么直观。这就是我们所说的在每个级别上具有相同节点数的两次尝试。
标签: java algorithm tree binary-tree nodes