Sequence traversal of binary tree and Yanghui triangle

Sequence traversal of binary tree and Yanghui triangle

The reason why these two questions are put together is because their return value types are ==List<List<Integer>>==The elements put in the linked list are linked lists.
We can compare and study together.

Sequence traversal of binary tree

LeetCode title: Link: Hierarchical traversal of binary tree
Insert picture description here

class Solution {
    
    
    public List<List<Integer>> levelOrder(TreeNode root) {
    
    
        List<List<Integer>> list = new ArrayList<>();
        if (root == null) {
    
    
            return list;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        Queue<Integer> level = new LinkedList<>();
        queue.add(root);
        level.add(0);
        while (!queue.isEmpty()) {
    
    
            TreeNode node = queue.remove();
            int le = level.remove();

            if (le >= list.size()) {
    
    
                List<Integer> row = new ArrayList<>();

                list.add(row);
            }
            list.get(le).add(node.val);
            if (node.left != null) {
    
    
                queue.add(node.left);
                level.add(le + 1);

            }
            if (node.right != null) {
    
    
                queue.add(node.right);
                level.add(le + 1);
            }
        }
        return list;
    }
}

Yanghui triangle

LeetCode Title: Link: Yanghui Triangle
Insert picture description here

class Solution {
    
    
    public List<List<Integer>> generate(int numRows) {
    
    
        List<List<Integer>> list = new ArrayList<>();
        List<Integer> row = new ArrayList<>();

        row.add(1);
        list.add(row);

        if (numRows == 1) {
    
    
            return list;
        }
        row = new ArrayList<>();
        row.add(1);
        row.add(1);
        list.add(row);
        if (numRows == 2) {
    
    
            return list;
        }

        for (int i = 3; i <= numRows; i++) {
    
    
            row = new ArrayList<>();
            row.add(1);
            for (int j = 2; j < i; j++) {
    
    
                List<Integer> prevRow = list.get(i - 2);
                int a = prevRow.get(j - 2);
                int b = prevRow.get(j - 1);
                row.add(a + b);
            }
            row.add(1);
            list.add(row);
        }
        return list;
    }
}

Guess you like

Origin blog.csdn.net/weixin_52142731/article/details/115350477