算法-二叉树:在二叉搜索树中寻找节点

算法-二叉树:在二叉搜索树中寻找节点

确定一个节点是否在二叉搜索树中,如果在,则返回这个节点,如果不在,则返回NULL。树中没有重复元素。

方法一:递归

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;
}

你可能感兴趣的:(C++,算法,数据结构)