• 二叉搜索树和双向链表


    题目描述

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

    方法一:

    递归实现

    class Solution:
        def __init__(self):
            self.realHead=None
            self.head=None
        def Convert(self, pRootOfTree):
            # write code here
            if not pRootOfTree:
                return None
            self.Convert(pRootOfTree.left)
            if not self.realHead:
                self.realHead=pRootOfTree
                self.head=self.realHead
            else:
                pRootOfTree.left=self.head
                self.head.right=pRootOfTree
                self.head=pRootOfTree
            self.Convert(pRootOfTree.right)
            return self.realHead

    方法二:

    不用递归实现

    class Solution:
            if pRootOfTree is None:
                return None
            p=pRootOfTree
            s=[]
            isfirt=True
            while p or s:
                if p:
                    s.append(p)
                    p=p.left
                else:
                    p=s.pop()
                    if isfirt:
                        root=p
                        prep=p
                        isfirt=False
                    else:
                        prep.right=p
                        p.left=prep
                        prep=p
                    p=p.right
            return root

  • 相关阅读:
    Java EE 和 Java Web
    09-盒模型
    08-层叠性权重相同处理
    07-css的继承性和层叠性
    06-伪元素选择器
    05-伪类选择器
    04-属性选择器
    03-高级选择器
    02-css的选择器
    01-css的引入方式
  • 原文地址:https://www.cnblogs.com/girl1314/p/10469539.html
Copyright © 2020-2023  润新知