【剑指Offer】二叉搜索树的第k个结点 解题报告(Python)

【剑指Offer】二叉搜索树的第k个结点 解题报告(Python)

标签(空格分隔): 剑指Offer


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述:

给定一颗二叉搜索树,请找出其中的第k大的结点。
例如,

               5
              /  \ 
             3    7 
            / \  / \ 
           2  4  6  8 

中,按结点数值大小顺序第三个结点的值为4。

解题方法

遇到BST想中序遍历。这个题先中序遍历,然后找出第k个节点。

代码:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回对应节点TreeNode
    def KthNode(self, pRoot, k):
        if k <= 0: return None
        res = []
        self.inOrder(pRoot, res)
        if len(res) < k:
            return None
        return res[k - 1]

    def inOrder(self, root, res):
        if not root: return
        if root.left:
            self.inOrder(root.left, res)
        res.append(root)
        if root.right:
            self.inOrder(root.right, res)

Date

2018 年 3 月 28 日 – 北京雾霾+沙尘暴,我的天。。

你可能感兴趣的:(算法,牛客网,剑指offer)