Para probar la oferta de seguridad - nodo del árbol binario de búsqueda de la pequeña k

título Descripción

Dado un árbol binario de búsqueda, por favor, encontrar los nodos de la primera k más pequeños en el mismo. Por ejemplo, (5,3,7,2,4,6,8), los valores numéricos de acuerdo con la tercera punto de unión es 4 resumen.

pensamiento

De hecho, la secuencia de recorrido, el k-ésimo nodo atravesado

# -*- 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

 

Publicado 82 artículos originales · ganado elogios 2 · Vistas 4344

Supongo que te gusta

Origin blog.csdn.net/qq_22498427/article/details/104983098
Recomendado
Clasificación