java - 对两棵二叉树求和,并在第三棵二叉树中返回总和的结果
问题描述
所以我必须创建一个代码,可以对两个不同的二叉树求和,并在第三棵二叉树中返回它的结果。它必须使用递归来工作。这是我目前拥有的代码。它有点工作,但它不能递归工作。
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),
我将不胜感激所有的帮助!
解决方案
两个二叉树之和的简单递归函数:
/**
* Definition for a binary tree node.
* public class BTreeNode {
* int val;
* BTreeNode left;
* BTreeNode right;
* BTreeNode() {}
* BTreeNode(int val) { this.val = val; }
* BTreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public BTreeNode btSum(BTreeNode t1, BTreeNode t2) {
if(t1==null){
return t2;
}
if(t2==null){
return t1;
}
BTreeNode t3 = new BTreeNode();
t3.val = t1.val + t2.val;
t3.left = btSum(t1.left, t2.left);
t3.right = btSum(t1.right, t2.right);
return t3;
}
}
推荐阅读
- flutter - 在 Flutter 项目的 FuturBuilder 中使用 StreamBuilder 是否正确?
- azure - 哪个 Azure 云存储可以满足我的要求?
- java - Spring abac 数据过滤与 Spring @PostFilter
- react-query - 如何在 axios 中使用 react-query 突变?
- python-3.x - 如何在 python 中以 hh:mm 格式获取时间?
- flutter - 数据显示为 NULL,除非我做一个小的改变来强制热重载。为什么一开始没有呢?
- javascript - 没有处理 React 的斜杠
- c - c程序不要求sub_name?
- python - 从菜单模式和终端模式运行时,CUDA 结果不同
- azure - Azure ARM 模板参数文件中的函数无法正常工作