【Leetcode】:144. Binary Tree Preorder Traversal 问题 in Go语言
2016-04-22 17:55
549 查看
Given a binary tree, return the preorder traversal of its nodes' values.
Note: Recursive
solution is trivial, could you do it iteratively?
------------------------------------------------------------------------------------------------------------------------------------
这道题用递归的方法来做实在是太简单了
但是题目不让用递归,那么就用循环迭代来做吧,代码中运用到了栈,把一个一个的节点压入栈中来实现先序遍历
Note: Recursive
solution is trivial, could you do it iteratively?
------------------------------------------------------------------------------------------------------------------------------------
这道题用递归的方法来做实在是太简单了
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func preorderTraversal(root *TreeNode) []int { if (root == nil) { return nil } traver := []int{root.Val} l := preorderTraversal(root.Left) r := preorderTraversal(root.Right) traver = append(traver, l...) traver = append(traver, r...) return traver }
但是题目不让用递归,那么就用循环迭代来做吧,代码中运用到了栈,把一个一个的节点压入栈中来实现先序遍历
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ import("container/list") func preorderTraversal(root *TreeNode) []int { if root == nil { return nil } traver := []int{} stack := list.New() stack.PushBack(root) for { e := stack.Back() if e == nil { break } stack.Remove(e) node, _ := e.Value.(*TreeNode) traver = append(traver, node.Val) if node.Right != nil { stack.PushBack(node.Right) } if node.Left != nil { stack.PushBack(node.Left) } } return traver }
相关文章推荐
- Go 语言 Channel 实现原理精要
- Go语言将支持Android
- Golang实现的聊天程序服务端和客户端代码分享
- Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结
- GO语言异常处理机制panic和recover分析
- go语言执行windows下命令行的方法
- Go语言计算两个经度和纬度之间距离的方法
- Go语言排序与接口实例分析
- Go语言导出内容到Excel的方法
- go语言实现sqrt的方法
- Go语言MessageBox用法实例
- Go语言判断指定文件是否存在的方法
- go语言制作的zip压缩程序
- go语言channel实现多核并行化运行的方法
- Go语言MD5加密用法实例
- go语言使用scp的方法实例分析
- Go语言中的switch用法实例分析
- Golang学习笔记(三):控制流
- go语言检测文件是否存在的方法
- Go语言里的结构体文法实例分析