【发布时间】:2020-10-19 02:40:15
【问题描述】:
所以我必须创建一个代码,可以对两个不同的二叉树求和,并在第三棵二叉树中返回它的结果。它必须使用递归来工作。这是我目前拥有的代码。它有点工作,但它不能递归工作。
public BTree btNodeSum(BTree b, BTree b2) throws TreeException {
if (isEmpty()) {
throw new TreeException("Binary Tree is empty");
}
BTree tree = new BTree();
tree.root = btNodeSum(b.root, b2.root);
return tree;
}
private BTreeNode btNodeSum(BTreeNode b, BTreeNode b2) throws TreeException{
BTreeNode n = new BTreeNode(0);
if(b == null)
return b2;
if(b2 == null)
return b;
if(b.left != null && b2.left != null){
b = btNodeSum(b.left, null);
b2 = btNodeSum(null, b2.left);
n.data = (int) btNodeSum(b, null).data + (int) btNodeSum(null, b2).data;
}
else if(b.right != null && b2.right != null){
b = btNodeSum(b.right, null);
b2 = btNodeSum(null, b2.right);
n.data = (int) btNodeSum(b, null).data + (int) btNodeSum(null, b2).data;
}
b = btNodeSum(b.left, null);
b2 = btNodeSum(null, b2.left);
b = btNodeSum(b.right, null);
b2 = btNodeSum(null, b2.right);
return n;
}
我试图求和的两棵树具有以下值:
我得到的输出是这个: 树 1 和树 2 的总和:PreOrder Tour: 8(null, 0),
感谢所有帮助!
【问题讨论】:
-
嘿!据我所知,它已经是递归的了。究竟是什么问题?
-
基本不显示8(null, 0)以外的结果,该方法没有移动到树的其他节点,只停留在5和3,相加后停止