题目:从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印一行。解题思路用一个队列来保存将要打印的结点。为了把二叉树的每一行单独打印到一行里,我们需要两个变量:一个变量表示在当前的层中还没有打印的结点数,另一个变量表示下一次结点的数目。结点定义private static class BinaryTreeNode { private int val;
题目:求树中两个结点的最低公共祖先,此树不是二叉树,并且没有指向父节点的指针。树的结点定义private static class TreeNode { int val; List<TreeNode> children = new LinkedList<>(); public TreeNode() { } public TreeNode(int val) { this.val = val;
题目:0, 1, … , n-1 这 n 个数字排成一个圈圈,从数字 0 开始每次从圆圏里删除第 m 个数字。求出这个圈圈里剩下的最后一个数字。解题思路第一种:经典的解法, 用环形链表模拟圆圈。创建一个总共有 n 个结点的环形链表,然后每次在这个链表中删除第 m 个结点。代码实现public static int lastRemaining(int n, int m) { if (n < 1 || m <