[LeetCode By Go 69]107. Binary Tree Level Order Traversal II

题目

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

For example:
Given binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

return its bottom-up level order traversal as:

[
  [15,7],
  [9,20],
  [3]
]

解题思路

递归层序遍历二叉树,递归返回时加入每一层的节点值集合

代码

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
var ret [][]int

func levelTravel(nodeArr []*TreeNode){
    var nextNodeArr []*TreeNode
    var valArr []int

    len1 := len(nodeArr)
    if 0 == len1 {
        return
    }
    
    for i := 0; i < len1; i++ {
        v := nodeArr[i]
        if nil != v.Left {
            nextNodeArr = append(nextNodeArr, v.Left)
        }
        if nil != v.Right {
            nextNodeArr = append(nextNodeArr, v.Right)
        }

        valArr = append(valArr, v.Val)
    }
    fmt.Printf("valArr:%+v\n", valArr)
    levelTravel(nextNodeArr)

    ret = append(ret, valArr)
}

func levelOrderBottom(root *TreeNode) [][]int {
    if nil == root {
        return [][]int{}
    }
    ret = [][]int{}

    nextNodeArr := []*TreeNode{root}
    levelTravel(nextNodeArr)

    return ret
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容