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

  • 相关阅读:
    ExtJs学习笔记之ComboBox组件
    ExtJs学习笔记之学习小结LoginDemo
    ExtJs学习笔记之Button组件
    ExtJs学习笔记之TextField
    WAF指纹识别和XSS过滤器绕过技巧
    python中的迭代与递归
    使用Python对文档单词进行计数
    Python正则表达式使用实例
    Python十六进制与字符串的转换
    数组名a,数组名取地址&a,数组首地址&a[0],数组指针*p
  • 原文地址:https://www.cnblogs.com/girl1314/p/10469539.html
Copyright © 2011-2022 走看看