二叉树刷题 Go语言

二叉树刷题-Go语言

问题描述:

给定一个二叉树,返回它的中序 遍历。

示例:

输入: [1,null,2,3]

1
 \
  2
 /
3

输出: [1,3,2]

解题思路:

直接用递归中序遍历

代码:

  • 错误示例:

    func inorderTraversal(root *TreeNode) []int{
      valueList := make([]int, 0)//每次都会初始化一个,最后返回的切片中只有一个值
      
      if root == nil {
          return valueList
      }
      
      MidTraversal(root.Left)
      valueList = append(valueList, root.Val)
      MidTraversal(root.Right)
      
      return valueList
    }
    
  • 解决办法,闭包

    /**
     * Definition for a binary tree node.
     * type TreeNode struct {
     *     Val int
     *     Left *TreeNode
     *     Right *TreeNode
     * }
     */
    func inorderTraversal(root *TreeNode) []int {
      if root == nil{
            return []int{}
        }
        res := make([]int,0,10)
        var inorder func(r *TreeNode)
        inorder = func(r *TreeNode){
            if r == nil{
                return 
            }
            inorder(r.Left)
            res = append(res,r.Val)
            inorder(r.Right)
        }
       inorder(root)
       return res
    }