【剑指offer】62 二叉搜索树中的第k个节点

题目

在这里插入图片描述

分析

二叉搜索树的前序遍历刚好是节点值从小到大的排序。所以先使用前序遍历,然后输出第k个节点。
前序遍历的过程为:
维护一个栈和一个数组一个指向节点的指针

  • 1,从根开始,指针向左子树方向深入不断把节点压入栈中
  • 2,如果栈不为空,那么取出栈顶的节点,放入数组中,并且指针指向它的右子树。

python代码

class Solution:
    # 返回对应节点TreeNode
    def KthNode(self, pRoot, k):
        # write code here
        root = pRoot
        if k == 0: return None
        stack = []
        res = []
        while (root!=None or len(stack)!=0):
            while(root):
                stack.append(root)
                root = root.left
            if(len(stack)!=0):
                t = stack.pop(-1)
                res.append(t)
                root = t.right
        return res[k-1] if k<=len(res) else None
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值