zoukankan      html  css  js  c++  java
  • 给定一个二叉树,原地将它展开为一个单链表。

    例如,给定二叉树

        1
       / 
      2   5
     /    
    3   4   6
    将其展开为:
    1
     
      2
       
        3
         
          4
           
            5
             
              6
    python:(官方解法:前序遍历)
    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution(object):
        def flatten(self, root):
            """
            :type root: TreeNode
            :rtype: None Do not return anything, modify root in-place instead.
            """
            preordList = list()
            def preorderTraversal(root):
                if root:
                    preordList.append(root)
                    preorderTraversal(root.left)
                    preorderTraversal(root.right)
            preorderTraversal(root)
            size = len(preordList)
            for i in range(1,size):
                prev,curr = preordList[i-1],preordList[i]
                prev.left = None
                prev.right = curr

    go:

    func flatten(root *TreeNode)  {
        list := preorderTraversal(root)
        for i := 1; i < len(list); i++ {
            prev, curr := list[i-1], list[i]
            prev.Left, prev.Right = nil, curr
        }
    }
    
    func preorderTraversal(root *TreeNode) []*TreeNode {
        list := []*TreeNode{}
        if root != nil {
            list = append(list, root)
            list = append(list, preorderTraversal(root.Left)...)
            list = append(list, preorderTraversal(root.Right)...)
        }
        return list
    }
  • 相关阅读:
    容易混淆的JavaScript基础知识之语法部分
    CSS入门基础学习一
    HTML基础入门学习准备篇
    HTML基础入门学习
    数据结构绪论
    CSS入门基础学习二
    JavaScript学习第一篇
    CSS/CSS3常用的样式
    vs 发生异常时不能被捕获
    c# 反射
  • 原文地址:https://www.cnblogs.com/ghl666/p/13423702.html
Copyright © 2011-2022 走看看