二叉树的搜索
Posted zouma
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的搜索相关的知识,希望对你有一定的参考价值。
1.正常递归
1 TreeNode* searchBST(TreeNode* root, int val) 2 if (!root) 3 return nullptr; 4 if (val > root->val) 5 6 root = searchBST(root->right, val); 7 8 else if (val < root->val) 9 10 root = searchBST(root->left, val); 11 12 return root; 13
2.中序递归
1 TreeNode* searchBST(TreeNode* root, int val) 2 if (!root) 3 return nullptr; 4 TreeNode* res = searchBST(root->left, val); 5 if (res) 6 return res; 7 else if (root->val > val) 8 return nullptr; 9 else if (root->val == val) 10 return root; 11 TreeNode* res = searchBST(root->right, val); 12 return res; 13
3.迭代
1 TreeNode* searchBST(TreeNode* root, int val) 2 while (root) 3 4 if (root->val > val) 5 root = root->left; 6 else if (root->val < val) 7 root = root->right; 8 else 9 return root; 10 11 return root; 12
以上是关于二叉树的搜索的主要内容,如果未能解决你的问题,请参考以下文章
算法漫游指北(第十三篇):二叉树的基本概念满二叉树完全二叉树二叉树性质二叉搜索树二叉树定义二叉树的广度优先遍历
二叉树有关习题整理145二叉树的后序遍历 94二叉树的中序遍历 572另一棵树的子树 236二叉树的最近公共祖先 JZ36二叉搜索树与双向链表 - 牛客
二叉树系列验证二叉搜索树&二叉搜索树的最小绝对差&二叉搜索树中的众数&二叉树的最近公共祖先