We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
原题链接:https://leetcode.cn/problems/merge-two-binary-trees/
这是一道关于二叉树的题目,要求我们合并两棵二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。
null
我们可以使用递归的方法来解决这个问题。具体步骤如下:
基本情况:如果 root1 或 root2 中的任何一个为 null,则返回非空的那个节点。这是因为,如果其中一个节点为 null,那么合并的结果就是另一个节点。
root1
root2
递归情况:如果 root1 和 root2 都不为 null,我们可以创建一个新的节点,其值为 root1.val + root2.val。
root1.val + root2.val
递归合并 root1 和 root2 的左子树,并将结果设置为新节点的左子树。
递归合并 root1 和 root2 的右子树,并将结果设置为新节点的右子树。
返回新节点。
function TreeNode(val, left, right) { this.val = (val===undefined ? 0 : val); this.left = (left===undefined ? null : left); this.right = (right===undefined ? null : right); } var mergeTrees = function(root1, root2) { // 基本情况 if (root1 === null) return root2; if (root2 === null) return root1; // 创建新节点 let newNode = new TreeNode(root1.val + root2.val); // 递归合并左子树和右子树 newNode.left = mergeTrees(root1.left, root2.left); newNode.right = mergeTrees(root1.right, root2.right); return newNode; };
这种递归方法的时间复杂度是 O(min(m, n)),其中 m 和 n 分别是两棵树的节点数。因为我们只访问了两棵树中都存在的节点。空间复杂度取决于递归的深度,最坏情况下,递归的深度等于较小的树的高度,所以空间复杂度是 O(min(height1, height2))。
O(min(m, n))
m
n
O(min(height1, height2))
The text was updated successfully, but these errors were encountered:
No branches or pull requests
原题链接:https://leetcode.cn/problems/merge-two-binary-trees/
这是一道关于二叉树的题目,要求我们合并两棵二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为
null
的节点将直接作为新二叉树的节点。思路分析:
我们可以使用递归的方法来解决这个问题。具体步骤如下:
基本情况:如果
root1
或root2
中的任何一个为null
,则返回非空的那个节点。这是因为,如果其中一个节点为null
,那么合并的结果就是另一个节点。递归情况:如果
root1
和root2
都不为null
,我们可以创建一个新的节点,其值为root1.val + root2.val
。递归合并
root1
和root2
的左子树,并将结果设置为新节点的左子树。递归合并
root1
和root2
的右子树,并将结果设置为新节点的右子树。返回新节点。
代码实现:
这种递归方法的时间复杂度是
O(min(m, n))
,其中m
和n
分别是两棵树的节点数。因为我们只访问了两棵树中都存在的节点。空间复杂度取决于递归的深度,最坏情况下,递归的深度等于较小的树的高度,所以空间复杂度是O(min(height1, height2))
。The text was updated successfully, but these errors were encountered: