Daily LeetCode – day0007 0623. Add One Row to Tree

class Solution {
    public TreeNode addOneRow(TreeNode root, int val, int depth) {
        if (depth == 1) {
            return new TreeNode(val, root, null);
        }
        Queue<TreeNode> upperFloor = new LinkedList<>();
        int layer = 0;
        upperFloor.add(root);
        while (++layer < depth - 1) {
            int queueSize = upperFloor.size();
            for (int i = 0; i < queueSize; ++i) {
                TreeNode peek = upperFloor.poll();
                if (peek.left != null) {
                    upperFloor.add(peek.left);
                }
                if (peek.right != null) {
                    upperFloor.add(peek.right);
                }
            }
        }
        for (TreeNode node : upperFloor) {
                node.left = new TreeNode(val, node.left, null);
                node.right = new TreeNode(val, null, node.right);
        }
        return root;
    }
}
学习笔记:
这是一道二叉树的题目,也是可以使用深度优先搜索和宽度优先搜索。
深度优先搜索写得代码会特别巧妙,解题的方法自己递归调用自己。
宽度优先搜索也比较符合直觉,把要插入的楼上一层找出来后插入一层。


关于樊轶群

一个善良的理想主义者。
此条目发表在每日LeetCode分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。