二叉树的搜索

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 

 

以上是关于二叉树的搜索的主要内容,如果未能解决你的问题,请参考以下文章