剣指Offer:二叉探索木のK番目の接点
タイトル説明:二叉検索ツリーを指定し、その中のk番目の大きなノードを見つけてください.たとえば、5/3 7////24 6 8の3番目のノードの値は、ノードの数値の大きさ順に4になります.
二叉探索ツリーの中順遍歴はソートされているため,まず中順に二叉ツリー全体を遍歴し,それをリストに保存し,リストのK番目の値を返すことができることを知っている.
二叉探索ツリーの中順遍歴はソートされているため,まず中順に二叉ツリー全体を遍歴し,それをリストに保存し,リストの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):
# write code here
list = self.tolist(pRoot)
if k <= 0 or k > len(list):
return None
return list[k-1]
def tolist(self, root):
if root == None:
return []
left = self.tolist(root.left)
right = self.tolist(root.right)
return left + [root] + right