zoukankan      html  css  js  c++  java
  • 剑指offer二叉搜索树与双向链表python

    题目描述

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

    思路

    二叉搜索树,自然想到中序遍历。中序遍历出来的结果就是排序的。因为不能创建新的节点,所以,我们定义2个指针,一个指向链表的头,一个指向当前遍历的节点,当遍历到下一个节点的适合,创建和指针双向的连接,然后把此节点改为当前遍历节点。

    代码

    # -*- coding:utf-8 -*-
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution:
        def __init__(self):
            self.listHead = None
            self.listTail = None
        def Convert(self, pRootOfTree):
            if not pRootOfTree:
                return 
            self.Convert(pRootOfTree.left)
            if not self.listHead: #遍历的第一个结点
                self.listHead = pRootOfTree
                self.listTail = pRootOfTree
            else:
                self.listTail.right = pRootOfTree
                pRootOfTree.left = self.listTail
                self.listTail = pRootOfTree
            self.Convert(pRootOfTree.right)
            return self.listHead
            
  • 相关阅读:
    Object-c NSArray
    内存管理池
    Objuct-c 对象的初始化 存起器 属性 self和super 内存管理
    继承什么的
    Object C 多态性
    Objectvie
    (重点) 协议
    分类
    一张图了解Python
    转载 MySql常用查询语句(23种)
  • 原文地址:https://www.cnblogs.com/wangzhihang/p/11844869.html
Copyright © 2011-2022 走看看