题解 | #第k轻的牛牛#

第k轻的牛牛

https://www.nowcoder.com/practice/d3b31f055b1640d9b10de0a6f2b8e6f3

  • 题目考察的知识点 : 二叉树的遍历
  • 题目解答方法的文字分析:
  1. 中序遍历可以得到树中元素的有序序列,利用栈模拟中序遍历的过程,可以高效地找到第k小的值。
  2. 初始化栈,将根节点入栈,当栈不空时,遍历左子树并入栈,出栈一个节点并计数,当计数等于k时,返回节点值,继续遍历右子树
  • 本题解析所用的编程语言:Python
  • 完整且正确的编程代码
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @param k int整型 
# @return int整型
#
class Solution:
    def kthLighest(self , root: TreeNode, k: int) -> int:
        n = 0
        stack = []
        cur = root
  
        while cur or stack:
            while cur:
                stack.append(cur)
                cur = cur.left
      
            cur = stack.pop()
            n += 1
            if n == k:
                return cur.val
            cur = cur.right

        return -1

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @param k int整型 
# @return int整型
#
class Solution:
    def kthLighest(self , root: TreeNode, k: int) -> int:
        n = 0
        stack = []
        cur = root
  
        while cur or stack:
            while cur:
                stack.append(cur)
                cur = cur.left
      
            cur = stack.pop()
            n += 1
            if n == k:
                return cur.val
            cur = cur.right

        return -1
牛客高频top202题解系列 文章被收录于专栏

记录刷牛客高频202题的解法思路

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
码农索隆:7*24,随时待命,这是去🇷🇺打仗去了啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务