二叉查找树:
- 又叫(Binary Search Tree) 二叉搜索树
- 特点:支持动态数据集合的快速插入、删除、查找操作。
- 定义:
- 任意节点的左子树中的键值都 小于 此节点的键值。
- 任意节点的右子树中的键值都 大于 此节点的键值。
- 任意节点的左子树和右子树都是二叉搜索树。
// 判断是否是二叉查找树?bool IsBST(TreeNode* node, int minVal, int maxVal){if (node == nullptr) {return true;}if (node->val <= minVal || node->val >= maxVal) {return false;}if (IsBST(node->left, minVal, node->val) == false) {return false;}if (IsBST(node->right, node->val, maxVal) == false) {return false;}return true;}IsBST(node, INT_MIN, INT_MAX); // 先判读是不是BST, 初始值很巧妙
多叉树
构造:使用map , (key, val), key代表根节点,val代表子节点。val可以使用vector来记录。
多叉树的遍历: DFSvoid dfs(vector<string>& names, vector<string>& ans){if (names.size() == 0) {return;}for (int i = 0; i < names.size(); i++) {ans.push_back(names[i]);dfs(mp[names[i]], ans);}return;}
