二叉树查找兄弟结点
时间: 2023-07-18 22:21:58 浏览: 104
在二叉树中,兄弟结点指的是具有相同父节点的两个结点。如果要查找某个结点的兄弟结点,可以先找到该结点的父节点,然后再找到父节点的左右子节点,判断这两个子节点是否有一个是该结点,如果是,则另一个子节点就是该结点的兄弟结点。如果父节点为空或者该结点没有兄弟结点(即父节点只有一个子节点),则该结点没有兄弟结点。
以下是一个示例代码:
```
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode *parent;
TreeNode(int x) : val(x), left(NULL), right(NULL), parent(NULL) {}
};
TreeNode* findSiblingNode(TreeNode* node) {
if (!node || !node->parent) {
return NULL;
}
TreeNode* parent = node->parent;
if (!parent->left || !parent->right) {
return NULL;
}
if (parent->left == node) {
return parent->right;
} else {
return parent->left;
}
}
```
该函数接受一个指向结点的指针,返回该结点的兄弟结点。如果该结点没有兄弟结点,则返回空指针。在代码中,我们首先判断该结点和其父节点是否为空,如果为空则返回空指针。然后判断父节点是否有左右子节点,如果没有则返回空指针。最后判断该结点是父节点的左子节点还是右子节点,返回相应的兄弟结点。
阅读全文