JS 面试公司测试题
小弟最近得到一份某公司的测试,是有关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));
问这段程序在某些场景下不能运行,,要求指出是哪些场景,应该如何解决。。。。