# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param proot TreeNode类 # @param k int整型 # @return int整型 # class Solution: @staticmethod def KthNode_stack(proot:TreeNode,k:int): if not proot: return -1 count = 0 p = [] while (len(p) != 0) or proot is not None: while proot: p.append(proot) proot = proot.left temp = p[-1] p.pop() count += 1 if count == k: return temp.val proot = temp.right return -1 def __init__(self) -> None: self.res = None self.count = 0 def middleOrder(self, root, k): if not root or self.count > k: return # 先向左 最左边先计数 self.middleOrder(root.left,k) self.count += 1 if self.count == k: self.res = root self.middleOrder(root.right,k) def KthNode(self , proot: TreeNode, k: int) -> int: # write code here self.middleOrder(proot,k) if self.res: return self.res.val else: return -1