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

  • 相关阅读:
    辗转相除法求最大公约数和最小公倍数
    KMEANS算法
    Extjs RadioGroup中Radio的切换
    B树、B树、B+树、B*树都是什么
    DBSCAN算法的java实现
    SQL 基础:Select语句,各种join,union用法
    Ubuntu 安装中文输入法 fcitx
    Salesforce 主要发展历史
    Pair Programming(结对编程)
    学习笔记 设计模式之装饰者模式
  • 原文地址:https://www.cnblogs.com/girl1314/p/10469539.html
Copyright © 2011-2022 走看看