LeetCode107 二叉树的层次遍历

2019-12-24  本文已影响0人  洛珎

题目:

思路:

法一:1.根节点为空,直接返回空数组;

              根节点不为空,设置递归函数,输入二叉树和当前所在的层

            2.递归函数里,

                如果根节点的值不为空,并且层数对应的返回结果元素result[depth]为空,就先将对应的                  result[depth]设置为[],再将当前节点的值和对应的result[depth]解构到返回结果中

                如果根节点的值不为空,层数对应的返回结果元素result[depth]不为空,则直接将当前                     节点的值和对应的result[depth]解构到返回结果中

                再换到下一层

            3.再递归(右子树、当前深度)和(左子树、当前深度),反转即可

代码实现:

法二:

思路:时间复杂度为O(n)

        首先,异常判断,把根节点添加到当前层中去,遍历当前层的每个元素,再对应到当前节点,将对应的左右子树添加到下一层数组中去

        其次,将当前层的节点值添加到最终结果中,并将下一层换到当前层,下一层重置;循环

        最后将结果反转即可

优化:

上一篇 下一篇

猜你喜欢

热点阅读