zoukankan      html  css  js  c++  java
  • 二叉搜索树和双向链表

    题目描述

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

    方法一:

    递归实现

    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

  • 相关阅读:
    Citrix Receiver running on my mobile phone
    is undfined javascript error
    系统架构设计随笔
    计算机与数理化“最高”期刊之比较zt
    Tikhonov regularization
    关于Likelihood 和 Probability的差别
    Cross Validation
    八卦 Knuth zt
    Eclipse切换IDE界面语言
    数学家对数学的论述
  • 原文地址:https://www.cnblogs.com/girl1314/p/10469539.html
Copyright © 2011-2022 走看看