Leetcode 1305 两棵二叉搜索树中的所有元素
顺序合并时间复杂度 O(N) ,远快于任何排序算法。
JAVA:
public final List<Integer> getAllElements(TreeNode root1, TreeNode root2) { List<Integer> list1 = new LinkedList<Integer>(), list2 = new LinkedList<Integer>(); dfs(root1, list1); dfs(root2, list2); return combine(list1, list2); } private final List<Integer> combine(List<Integer> list1, List<Integer> list2) { int point1 = 0, point2 = 0, len1 = list1.size(), len2 = list2.size(); List<Integer> reList = new LinkedList<Integer>(); while (point1 < len1 && point2 < len2) { int val1 = list1.get(point1), val2 = list2.get(point2); if (val1 <= val2) { reList.add(val1); point1++; } else { reList.add(val2); point2++; } } if (point1 < len1) { for (int i = point1; i < len1; i++) reList.add(list1.get(i)); } if (point2 < len2) { for (int i = point2; i < len2; i++) reList.add(list2.get(i)); } return reList; } private final void dfs(TreeNode root, List<Integer> list) { if (root == null) return; dfs(root.left, list); list.add(root.val); dfs(root.right, list); }
JS:
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root1 * @param {TreeNode} root2 * @return {number[]} */ var getAllElements = function (root1, root2) { let arr1 = [], arr2 = []; dfs(root1, arr1); dfs(root2, arr2); return combine(arr1, arr2); }; var combine = (arr1, arr2) => { let len1 = arr1.length, len2 = arr2.length, point1 = 0, point2 = 0, reArr = []; while (point1 < len1 && point2 < len2) { let val1 = arr1[point1], val2 = arr2[point2]; if (val1 <= val2) { reArr.push(val1); point1++; } else { reArr.push(val2); point2++; } } if (point1 < len1) for (let i = point1; i < len1; i++) reArr.push(arr1[i]); if (point2 < len2) for (let i = point2; i < len2; i++) reArr.push(arr2[i]); return reArr; } var dfs = (root, arr) => { if (!root) return; dfs(root.left, arr); arr.push(root.val); dfs(root.right, arr); }
当你看清人们的真相,于是你知道了,你可以忍受孤独
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构