二叉搜索树的第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
}  

 

 

相关文章:

  • 2021-08-04
  • 2021-10-18
  • 2022-12-23
  • 2021-06-07
  • 2021-06-29
  • 2022-12-23
  • 2021-05-13
猜你喜欢
  • 2021-09-18
  • 2022-01-07
相关资源
相似解决方案