首页 > 其他分享 >[LeetCode][LCR174] 寻找二叉搜索树中的目标节点

[LeetCode][LCR174] 寻找二叉搜索树中的目标节点

时间:2024-03-12 23:33:51浏览次数:23  
标签:cnt LCR174 树中 dfs 二叉 搜索 节点 root LeetCode

题目

LCR 174. 寻找二叉搜索树中的目标节点

某公司组织架构以二叉搜索树形式记录,节点值为处于该职位的员工编号。请返回第 cnt 大的员工编号。

示例 1:
在这里插入图片描述

输入:root = [7, 3, 9, 1, 5], cnt = 2
       7
      / \
     3   9
    / \    
   1   5 
   输出:7

示例 2:
在这里插入图片描述

输入: root = [10, 5, 15, 2, 7, null, 20, 1, null, 6, 8],
cnt = 4
       10
      / \
     5   15
    / \    \    
   2   7    20   
   /   / \   
  1   6   8 
  输出: 8 

提示:

1 ≤ cnt ≤ 二叉搜索树元素个数

解法

  1. 对二叉搜索树来说,中序遍历可得有序序列
  2. 题目要求寻找第 cnt 大的节点,可以采用先传入右子树的中序遍历
  3. 设置标志位,一旦寻找到目标节点立刻返回(剪枝)

class Solution {
public:
    int count=0, n=0, ans=0;
    bool haveFound=false;
    void dfs(TreeNode* root){
        if(haveFound) return;
        if(!root) return;
        dfs(root->right);
        ++n;
        if(n==count){
            ans=root->val;
            haveFound=true;
        } 
        dfs(root->left);
    }
    int findTargetNode(TreeNode* root, int cnt) {
        count = cnt;
        dfs(root);
        return ans;
    }
};

标签:cnt,LCR174,树中,dfs,二叉,搜索,节点,root,LeetCode
From: https://blog.csdn.net/Beihai_Van/article/details/136666200

相关文章

  • 代码随想录算法训练营day21 | leetcode 530. 二叉搜索树的最小绝对差、501. 二叉搜索
    目录题目链接:530.二叉搜索树的最小绝对差-简单题目链接:501.二叉搜索树中的众数-简单题目链接:236.二叉树的最近公共祖先-中等题目链接:530.二叉搜索树的最小绝对差-简单题目描述:给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,......
  • LeetCode[题解] 1261. 在受污染的二叉树中查找元素
    首先我们看原题给出一个满足下述规则的二叉树:root.val==0如果 treeNode.val==x 且 treeNode.left!=null,那么 treeNode.left.val==2*x+1如果 treeNode.val==x 且 treeNode.right!=null,那么 treeNode.right.val==2*x+2现在这个二叉树受到「污......
  • 2024-03-12 leetcode写题记录
    目录2024-03-12leetcode写题记录160.相交链表题目链接题意解法解法一解法二2024-03-12leetcode写题记录160.相交链表题目链接160.相交链表题意给你两个单链表的头节点\(headA\)和\(headB\),请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回\(nu......
  • leetcode160.链表相交
    160.相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结......
  • 2024-03-11 leetcode写题记录
    目录2024-03-11leetcode写题记录206.反转链表题目链接题意解法876.链表的中间结点题目链接题意解法2024-03-11leetcode写题记录206.反转链表题目链接206.反转链表题意给你单链表的头节点head,请你反转链表,并返回反转后的链表。解法链表反转板子题,特殊处理下一个点......
  • Leetcode.19. 删除链表的倒数第 N 个结点
    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1] 提示:链表中结点的数目为 sz1<=sz<=300<=Node.val<=100......
  • leetcode: 1261: 在受污染的二叉树中查找元素
    给出一个满足下述规则的二叉树:root.val==0如果 treeNode.val==x 且 treeNode.left!=null,那么 treeNode.left.val==2*x+1如果 treeNode.val==x 且 treeNode.right!=null,那么 treeNode.right.val==2*x+2现在这个二叉树受到「污染」,所有的 tree......
  • LeetCode - 高频SQL50题(基础版)部分题解(上)
    1581.进店却未进行过交易的顾客原题:https://leetcode.cn/problems/customer-who-visited-but-did-not-make-any-transactions/题意:有一些顾客可能光顾了购物中心但没有进行交易。请你编写一个解决方案,来查找这些顾客的ID(customer_id),以及他们只光顾不交易的次数(count_no_trans......
  • leetcode: 2129. 将标题首字母大写
    给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母。请你按以下规则将每个单词的首字母 大写 :如果单词的长度为 1 或者 2 ,所有字母变成小写。否则,将单词首字母大写,剩余字母变成小写。请你返回 大写后 的 title 。示例1:输入:ti......
  • leetcode2397. 被列覆盖的最多行数 回溯法/枝剪
    第一次手搓一个回溯法,超时后采用枝剪勉强通过classSolution{intmax=0;intnumSelect;publicintmaximumRows(int[][]matrix,intnumSelect){Set<String>stateSet=newHashSet<>();dfs(matrix,newboolean[matrix[0].length],0,numSele......