Python binary search trees and doubly-linked list

Enter a binary search tree, the binary search tree converted into a doubly linked list sorted. Requirements can not create any new node, a node can only adjust the pointer pointing to the book.

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Solution:
    def Convert(self, pRootOfTree):
        if pRootOfTree == None:
            return None

        def find_right(node):
            while node.right:
                node = node.right
            return node

        leftNode = self.Convert(pRootOfTree.left)
        rightNode = self.Convert(pRootOfTree.right)

        retNode = leftNode

        if leftNode:
            leftNode = find_right(leftNode)
        else:
            retNode =pRootOfTree

        pRootOfTree.left=leftNode
        pRootOfTree.right = rightNode

        if leftNode!=None:
            leftNode.right=pRootOfTree
        if rightNode!=None:
            rightNode.left = pRootOfTree

        return retNode
Published 135 original articles · won praise 121 · Views 4858

Guess you like

Origin blog.csdn.net/weixin_44208324/article/details/105316164