算法-二叉树:在二叉搜索树中寻找节点 确定一个节点是否在二叉搜索树中,如果在,则返回这个节点,如果不在,则返回NULL。树中没有重复元素。
【C++|算法-二叉树(在二叉搜索树中寻找节点)】方法一:递归
TreeNode* searchNode(TreeNode* root,int target){
if(root == NULL || root->val == target) return root;
if(target < root->val){
return searchNode(root->left, target);
//注意这里时是return,因为这里的递归不需要遍历整棵树,找到值返回就行
}
if(target > root->val){
return searchNode(root->right, target);
}
return NULL;
}
方法二:基于二叉搜索树的有序性,不需要深度遍历或者层序遍历就可以写出迭代策略。
TreeNode* searchNode(TreeNode* root,int target){
if(root == NULL || root->val == target) return root;
while (!root) {
if(target < root->val){
root = root->left;
}
else if(target > root->val){
root = root->right;
}
else{
return root;
}
}
return NULL;
}
推荐阅读
- 算法|如何理解Apollo模型参考自适应控制MRAC
- C++|算法-优化(以空间换时间,找n个小写字母中出现次数最多的字母)
- C++|算法-字符串(反转字符串里的单词)
- C++|算法-栈和队列(用栈实现队列)
- FPGA学习笔记|FPGA学习笔记_图像处理6_FPGA实现 sobel算子边缘检测算法
- 机器学习|机器学习(七)过拟合问题与正则化
- C++|C++11/14之智能指针std::unique_ptr
- 玩转算法系列–图论精讲 面试升职必备(Java版)含源码ppt无mi分xiang
- 排序算法|归并排序(c语言)