题解 | #二叉树的前序遍历#

二叉树的前序遍历

http://www.nowcoder.com/practice/5e2135f4d2b14eb8a5b06fab4c938635

二叉树的前序遍历

题目描述 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

方法一:python方法

解题思路

对于本题,前序遍历就是一个递归,直接套模板,使用python实现。

alt

解题代码

class Solution:
    def preorderTraversal(self , root: TreeNode) -> List[int]:
        # write code here
        result = []
        def preorder(root):
            if not root:
                return
            result.append(root.val)
            preorder(root.left)
            preorder(root.right)
        preorder(root)
        return result

复杂度分析

时间复杂度:使用递归,因此时间复杂度为O(n)O(n)

空间复杂度:使用递归,递归栈使用内存地址空间,因此空间复杂度为O(n)O(n)

方法二:golang方法

解题思路

思路同方法一,使用golang实现。

解题代码

package main
import . "nc_tools"

func preorderTraversal( root *TreeNode ) []int {
    // write code here
    res:=make([]int,0)
    preOrder(&res,root)
    return res
}
func preOrder(res *[]int,root *TreeNode){
    if root==nil{
        return
    }
    *res=append(*res, root.Val)
    preOrder(res,root.Left)
    preOrder(res,root.Right)
}

复杂度分析

时间复杂度:使用递归,因此时间复杂度为O(n)O(n)

空间复杂度:使用递归,递归栈使用内存地址空间,因此空间复杂度为O(n)O(n)

算法 文章被收录于专栏

算法题的题解以及感受

全部评论
请问go的切片不是地址传递吗?为什么这里不用指针会错
点赞 回复 分享
发布于 2022-03-26 10:19

相关推荐

2024-12-31 09:44
武汉理工大学 Java
程序员牛肉:暑假实习是面向大三招收的哦。你才27届不用急哦。 第一点:在简历的实习板块中简单描述一下你的业务,你说你做了什么什么模块,那你这个模块是在哪个项目中的?简单介绍一下你做的模块所隶属的项目。项目那块挖的还是不够深,先不用着急更新简历,可以再沉淀个四五天。 实习要是让面试官觉得是包装出来的话,是一件很严重的问题,说难听点就是造假。互联网很看重诚信问题,你一旦出现了这种诚信问题,基本这辈子就距离大厂无缘了 2.不要贴任何链接了,没啥用而且很影响美观。有的时候让面试管看着顺不顺眼也是一个是否约你面试的影响因素。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务