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

  • 相关阅读:
    01-文件系统
    适配器模式,新老系统兼容
    01-Entity FrameWork如何控制数据的变化
    .Net实战之反射操作篇
    .Net实战之反射相关类之间的人体经络关系
    .Net实战之反射外卖计费
    [转]UINavigationController 返回的方法汇总
    [转]AFNetWorking使用笔记
    vue----子组件引用vux popup mask遮罩在最上层解决办法 z-index问题
    vue系列---vue项目(已安装vuex)中引入jquery
  • 原文地址:https://www.cnblogs.com/girl1314/p/10469539.html
Copyright © 2011-2022 走看看