【发布时间】:2018-10-05 08:26:08
【问题描述】:
我知道这个想法是首先在树上进行级别顺序遍历。
如果节点位于同一级别并且它们的父节点不匹配,则它们是堂兄弟。
如果匹配,他们是兄弟姐妹。
我可以通过以下方式进行级别顺序遍历
BinarySearchTree.prototype.levelOrderTraversal = function() {
var q = [];
var results = [];
var _root = this.root;
if(_root) {
q.push(_root);
while(q.length > 0) {
var temp = q.shift();
results.push(temp.value);
if(temp.left) {
q.push(temp.left);
}
if(temp.right) {
q.push(temp.right);
}
}
return results;
}else {
return null;
}
}
但是现在我如何跟踪父母,以便我可以找到给定的节点是兄弟姐妹或堂兄弟姐妹?
例如,
如果我的水平顺序遍历给了我
[3, 2, 4, 1, 5]
3 是根,2 和 4 是兄弟姐妹或父 3。
1 是父母 2 的左孩子。
5 是父母 4 的右孩子。
所以,1 和 5 是表亲节点,而 2 和 4 是兄弟节点。
【问题讨论】:
-
你有一些数据要测试吗?
-
@NinaScholz 刚刚更新了问题。
-
请添加树对象和结果,你喜欢的数据结构。
-
你还想采取同样的水平遍历还是其他,比如深度优先?
-
@NinaScholz 一切都很好,我只是不知道该走哪条路。我在某处读到的级别命令也可以实现,但无论如何应该没问题。
标签: javascript data-structures binary-tree