Pour prouver l'offre de sécurité - nœud de l'arbre de recherche binaire du petit k

Titre description

Étant donné un arbre de recherche binaire, s'il vous plaît trouver le premier k petits nœuds qui y sont. Par exemple, (5,3,7,2,4,6,8), les valeurs numériques selon le troisième point de jonction est de 4 sommaire.

pensée

En fait, la séquence de parcours, le k-ième noeud traversé

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def KthNode(self, root, k):
        #相当于中序遍历,遍历到的第k个点
        if k<=0 or not root:
            return None
        
        index = 0
        nodes = []
        while 1:
            while 1:
                while root.left:
                    nodes.append(root)
                    root = root.left
                index += 1
                if index == k:
                    return root
                if root.right:
                    root = root.right
                else:
                    break
            if len(nodes)>0:
                root = nodes.pop()
                index += 1
                if index == k:
                    return root
                while root.right == None and len(nodes)>0:
                    root = nodes.pop()
                    index += 1
                    if index == k:
                        return root
                if root.right:
                    root = root.right
                else:
                    break
            else:
                break
        return None

 

Publié 82 articles originaux · louange gagné 2 · Vues 4344

Je suppose que tu aimes

Origine blog.csdn.net/qq_22498427/article/details/104983098
conseillé
Classement