zoukankan      html  css  js  c++  java
  • 递归与二叉树_leetcode230

    # Definition for a binary tree node.
    class TreeNode(object):
    def __init__(self, x):
    self.val = x
    self.left = None
    self.right = None


    # 即中序遍历的第K个节点
    class Solution1(object):
    def kthSmallest(self, root, k):
    self.count=k
    self.res=0

    def core(root):
    if root :

    core(root.left)

    self.count=self.count-1
    if self.count==0:
    self.res=root.val

    core(root.right)

    core(root)
    return self.res



    # 这个栈的中序遍历好不规范呀
    class Solution2(object):
    def kthSmallest(self, root, k):
    stack=[]
    while True:
    if root:
    stack.append(root)
    root=root.left
    else:
    root=stack.pop()
    k=k-1
    if k==0:
    return root.val
    else:
    root=root.right



    class Solution3(object):
    def kthSmallest(self, root, k):

    res = []
    self.midOrder(root,res)
    return res[k-1]



    def midOrder(self,root,res):

    if not root:
    return


    self.midOrder(root.left,res)
    res.append(root.val)
    self.midOrder(root.right,res)

    return res




    # 启示: 下层的K值无法改变上层的k值,所以要用全局变量
    class Solution4(object):
    def kthSmallest(self, root, k):


    return self.midOrder(root,k)


    def midOrder(self,root,k):

    if not root:
    return

    self.midOrder(root.left,k)

    k = k-1
    if k == 0:
    return root.val

    self.midOrder(root.right,k)


    def createTreee(self):
    root = TreeNode(3)
    root.left = TreeNode(1)
    root.right = TreeNode(4)
    root.left.right = TreeNode(2)

    return root


    class Solution5(object):
    def kthSmallest(self, root, k):
    self.count = 0
    self.res = 0

    self.midOrder(root,k)

    return self.res


    def midOrder(self,root,k):

    if not root:
    return


    self.midOrder(root.left,k)

    self.count += 1
    if k == self.count:
    self.res = root.val
    return

    self.midOrder(root.right,k)



    class Solution6(object):
    def kthSmallest(self, root, k):
    if not root:
    return root

    count = k
    stack = []

    stack.append(root.left)




    s = Solution4()

    root = s.createTreee()

    s.kthSmallest(root,1)





  • 相关阅读:
    java后台读取配置文件
    冒泡排序
    均分火柴
    Dos 批处理 Shutdown
    时间复杂度分析
    Python冒泡排序
    Python装饰器
    获取状态栏高度
    利用zxing生成二维码
    Android下利用zxing类库实现扫一扫
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10546795.html
Copyright © 2011-2022 走看看