js树结构查找某个节点的父级
时间: 2023-11-08 21:06:03 浏览: 37
可以使用递归的方式在树中查找某个节点的父级,假设树的节点结构如下:
```javascript
class TreeNode {
constructor(value, children) {
this.value = value;
this.children = children || [];
}
}
```
其中,`value` 表示节点的值,`children` 表示节点的子节点数组。
下面是一个求某个节点的父级的递归函数:
```javascript
function findParent(root, target) {
if (!root || root === target) {
return null;
}
for (let child of root.children) {
if (child === target) {
return root;
} else {
let parent = findParent(child, target);
if (parent) {
return parent;
}
}
}
return null;
}
```
这个函数接受两个参数,`root` 表示树的根节点,`target` 表示要查找父级的节点。如果根节点为空或者目标节点就是根节点,那么直接返回 `null`。然后遍历根节点的子节点数组,如果发现其中有一个子节点就是目标节点,那么返回根节点,否则递归查找子节点的子节点。如果在子节点的子节点中找到了目标节点的父级,那么返回父级,否则返回 `null`。
使用这个函数可以很方便地查找某个节点的父级。例如:
```javascript
let tree = new TreeNode(1, [
new TreeNode(2, [
new TreeNode(4),
new TreeNode(5)
]),
new TreeNode(3)
]);
let node = tree.children[0].children[0];
let parent = findParent(tree, node);
console.log(parent.value); // 2
```