树的常见操作c++
时间: 2024-02-15 12:02:07 浏览: 21
树的常见操作包括:
1. 树的遍历(前序遍历、中序遍历、后序遍历)
2. 树的深度/高度
3. 判断树是否为空
4. 查找树中某个节点
5. 插入节点到树中
6. 删除树中某个节点
7. 计算树的大小(节点数量)
8. 计算树的宽度
9. 求树的最大/最小深度
10. 判断树是否为平衡树
11. 判断树是否为二叉搜索树
以下是一些基于 C++ 实现的树的操作示例:
```
//定义树节点结构体
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
//树的遍历(前序遍历)
void preorderTraversal(TreeNode* root) {
if (root == NULL) return;
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
//计算树的大小(节点数量)
int getSize(TreeNode* root) {
if (root == NULL) return 0;
return getSize(root->left) + getSize(root->right) + 1;
}
//插入节点到树中
void insertNode(TreeNode* root, int val) {
if (root == NULL) return;
if (val < root->val) {
if (root->left == NULL) {
root->left = new TreeNode(val);
} else {
insertNode(root->left, val);
}
} else {
if (root->right == NULL) {
root->right = new TreeNode(val);
} else {
insertNode(root->right, val);
}
}
}
//删除树中某个节点
TreeNode* deleteNode(TreeNode* root, int key) {
if (root == NULL) return NULL;
if (key < root->val) {
root->left = deleteNode(root->left, key);
} else if (key > root->val) {
root->right = deleteNode(root->right, key);
} else {
if (root->left == NULL) {
TreeNode* temp = root->right;
delete root;
return temp;
} else if (root->right == NULL) {
TreeNode* temp = root->left;
delete root;
return temp;
}
TreeNode* cur = root->right;
while (cur->left != NULL) {
cur = cur->left;
}
root->val = cur->val;
root->right = deleteNode(root->right, cur->val);
}
return root;
}
```
以上只是树的部分常见操作,实际上还有很多其他操作和实现方式,可以根据具体情况进行选择。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)