JS 面试公司测试题

wangbigmountain 2016-08-22 03:50:24
小弟最近得到一份某公司的测试,是有关2叉树的用JavaScript写的,第一问就做不出来,,求大神解答,,考的有点细节了,感觉基础不够扎实。。。。。在线等,多谢多谢!!!!!

interface DomNode {
value: string;
left?: DomNode;
right?: DomNode;
}

function isSubtree(dom: DomNode, vdom: DomNode): boolean {
return stringFromPreOrder(dom).indexOf(stringFromPreOrder(vdom)) > -1;
}

function stringFromPreOrder(tree: DomNode): string {
if (!tree) {
return "";
}

return tree.value + stringFromPreOrder(tree.left) + stringFromPreOrder(tree.right);
}

// complex test case... W00t! It works!

const dom: DomNode = {
value: "root",
left: {
value: "a",
left: {
value: "c",
left: {
value: "g"
},
right: {
value: "h"
}
},
right: {
value: "d",
left: {
value: "i"
}
}
},
right: {
value: "b",
left: {
value: "e",
right: {
value: "j",
left: {
value: "k"
},
right: {
value: "l"
}
}
},
right: {
value: "f"
}
}
}

const vdom: DomNode = {
value: "a",
left: {
value: "c",
left: {
value: "g"
},
right: {
value: "h"
}
},
right: {
value: "d",
left: {
value: "i"
}
}
}

console.log(isSubtree(dom, vdom));

问这段程序在某些场景下不能运行,,要求指出是哪些场景,应该如何解决。。。。
...全文
362 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangbigmountain 2016-09-07
  • 打赏
  • 举报
回复
这个后来发现是Typescript。。。小弟我想的是没有考虑到空节点为null,在形成字符串的时候应该把null也打进去,可能会比较合适
zpjshiwo77 2016-08-22
  • 打赏
  • 举报
回复
这是js的语法吗?像.net的
cheery_an 2016-08-22
  • 打赏
  • 举报
回复
cheery_an 2016-08-22
  • 打赏
  • 举报
回复
单纯根据字串来判断是有问题,比如: a / \ b f / \ \ c e j \ d abcdefj c / \ d e cde 会被错误的判定为是子树

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧