Z62 二叉搜索树的第k个结点

二叉搜索树的第k个结点

题目:给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。

思路:

二叉搜索树的中序遍历是递增的序列,使用循环的中序遍历找到第k个节点就行了。
func KthNode(pRoot *TreeNode, k int) *TreeNode {
    if pRoot == nil {
        return nil
    }
    var s []*TreeNode 
    p := pRoot
    cnt := 0
    for len(s) != 0 || p != nil {
        for p != nil {
            s = append(s, p)
            p = p.Left         
        }
        if len(s) != 0 {
            p = s[len(s)-1]
            s = s[:len(s)-1]               
            cnt++
            if cnt == k {
                return p
            }                 
            p = p.Right
        }
    }
    return nil
}  

 

 

posted @ 2021-04-11 00:53  zqlucky  阅读(59)  评论(0编辑  收藏  举报