您的位置:首页 > 编程语言 > Python开发

Python:二叉搜索树的第k个节点

2017-07-17 10:27 211 查看
牛客网上的剑指 offer的在线编程:


题目描述

给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。

# -*- coding:utf-8 -*-
'''
二叉搜索树的第k个节点
题目描述
给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,
按结点数值大小顺序第三个结点的值为4。
'''
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
# 返回对应节点TreeNode
def KthNode(self, pRoot, k):
# write code here
if not pRoot or k == 0:
return None
res = self.sub_tree(pRoot)
if len(res) < k:
return None
else:
return res[k - 1]

def sub_tree(self, root):
res = []
if not root:
return None
if root.left:
res.extend(self.sub_tree(root.left))
res.append(root)
if root.right:
res.extend(self.sub_tree(root.right))
return res
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: