二叉搜索树与双向链表

递归

class Solution:
    def Convert(self, pRootOfTree):
        # write code here
        self.pre = None
        self.pHead = None
        self.digui(pRootOfTree)
        return self.pHead
    
    def digui(self, pRootOfTree):
        if not pRootOfTree:
            return None
        self.digui(pRootOfTree.left)
        if not self.pre:
            self.pHead = pRootOfTree
            self.pre = pRootOfTree
        else:
            self.pre.right = pRootOfTree
            pRootOfTree.left = self.pre
            self.pre = pRootOfTree
        self.digui(pRootOfTree.right)

非递归

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
class Solution:
    def Convert(self, pRootOfTree):
        # write code here
        pre = None
        stack = []
        pHead = None
        while stack or pRootOfTree:
            if pRootOfTree:
                stack.append(pRootOfTree)
                pRootOfTree = pRootOfTree.left
            else:
                pRootOfTree = stack.pop()
                if pre:
                    pre.right = pRootOfTree
                    pRootOfTree.left = pre
                else:
                    pHead = pRootOfTree
                pre = pRootOfTree
                pRootOfTree = pRootOfTree.right
        return pHead
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针...
    哦漏昵称已被占用阅读 225评论 0 0
  • 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点...
    夏臻Rock阅读 1,231评论 0 0
  • 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指...
    繁著阅读 1,382评论 0 1
  • 描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的...
    6默默Welsh阅读 131评论 0 0
  • 题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指...
    pw007992阅读 263评论 0 0