javascript-二叉树路径-我的代码出了什么问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-二叉树路径-我的代码出了什么问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1380字,纯文字阅读大概需要2分钟。
内容图文
这是二叉树路径问题:
给定一棵二叉树,返回所有从根到叶的路径.
例如,给定以下二进制树:
1
/ 2 3
5
所有的根到叶路径为:
["1->2->5", "1->3"]
这是我的Javascript代码:
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {string[]}
*/
var binaryTreePaths = function(root) {
var paths = [];
if(!root) return [];
if(root.left == null && root.right == null){
if(paths.length == 0) return [""+root.val];
else return root.val;
}
else{
if(root.left) paths.push(root.val + "->" + binaryTreePaths(root.left))
if(root.right) paths.push(root.val + "->" + binaryTreePaths(root.right))
}
return paths;
};
测试用例:
输入:
[1,2,3,5,6]
输出:
["1->2->5,2->6","1->3"]
预期:
["1->2->5","1->2->6","1->3"]
为什么我的代码输出未返回“ 1-> 2-> 6”的完整路径?
解决方法:
当您进行递归调用时,您的函数将返回一个数组.您不能只用前缀字符串来推送该数组的串联;您需要遍历返回的每个子路径,并构建一个单独的路径以压入数组:
var binaryTreePaths = function(root) {
var paths = [];
if(!root) return [];
if(root.left == null && root.right == null){
if(paths.length == 0) return [""+root.val];
else return root.val;
}
else{
if(root.left)
binaryTreePaths(root.left).forEach(function(lp) {
paths.push(root.val + "->" + lp);
});
if(root.right)
binaryTreePaths(root.right).forEach(function(rp) {
paths.push(root.val + "->" + rp);
});
}
return paths;
};
内容总结
以上是互联网集市为您收集整理的javascript-二叉树路径-我的代码出了什么问题全部内容,希望文章能够帮你解决javascript-二叉树路径-我的代码出了什么问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。