golang力扣leetcode 94.二叉树的中序遍历

简介: golang力扣leetcode 94.二叉树的中序遍历

94.二叉树的中序遍历

94.二叉树的中序遍历

题解

中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树

思路:递归和迭代

代码

package main
type TreeNode struct {
  Val   int
  Left  *TreeNode
  Right *TreeNode
}
func inorderTraversal1(root *TreeNode) []int {
  if root == nil {
    return nil
  }
  var stack []*TreeNode
  var result []int
  for root != nil || len(stack) > 0 {
    for root != nil {
      stack = append(stack, root)
      root = root.Left
    }
    //pop
    val := stack[len(stack)-1]
    stack = stack[:len(stack)-1]
    result = append(result, val.Val)
    root = val.Right
  }
  return result
}
func inorderTraversal2(root *TreeNode) []int {
  var inorder func(root *TreeNode)
  var result []int
  inorder = func(root *TreeNode) {
    if root == nil {
      return
    }
    inorder(root.Left)
    result = append(result, root.Val)
    inorder(root.Right)
  }
  inorder(root)
  return result
}
func main() {
}
目录
相关文章
|
3月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
3月前
【LeetCode 31】104.二叉树的最大深度
【LeetCode 31】104.二叉树的最大深度
28 2
|
3月前
【LeetCode 43】236.二叉树的最近公共祖先
【LeetCode 43】236.二叉树的最近公共祖先
24 0
|
3月前
【LeetCode 38】617.合并二叉树
【LeetCode 38】617.合并二叉树
20 0
|
3月前
【LeetCode 37】106.从中序与后序遍历构造二叉树
【LeetCode 37】106.从中序与后序遍历构造二叉树
26 0
|
3月前
【LeetCode 34】257.二叉树的所有路径
【LeetCode 34】257.二叉树的所有路径
24 0
|
3月前
【LeetCode 32】111.二叉树的最小深度
【LeetCode 32】111.二叉树的最小深度
19 0
|
4月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
147 4
Golang语言之管道channel快速入门篇
|
4月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
75 4
Golang语言文件操作快速入门篇
|
4月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
121 3
Golang语言之gRPC程序设计示例