/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ funcrightSideView(root *TreeNode) []int { if root == nil { // 树为空 return []int{} } res := []int{} // 记录结果 q := []*TreeNode{root} // 队列,根节点入队
for i := 0; len(q) > 0; i++ { p := []*TreeNode{} // p记录下一层节点 res = append(res, q[len(q)-1].Val) // 将本层最右边的节点加入结果集 for j := 0; j < len(q); j++ { // 将下一层节点加入队列 cur := q[j] if cur.Left != nil { // 左子树不为空,入队 p = append(p, cur.Left) } if cur.Right != nil { // 右子树不为空,入队 p = append(p, cur.Right) } } q = p // 已经遍历过本层节点,将q更新为下一层节点 }
SELECT (DISTINCT) 字段1,字段2, ... (存在聚合函数) FROM 表1, 表2, ... WHERE 多表连接条件 AND 不包含聚合函数的过滤条件 GROUP 分组 HAVING 包含聚合函数的过滤条件 ORDERBY 字段1, 字段2 (ASC/DESC) LIMIT index, rows
SQL 99
1 2 3 4 5 6 7 8
SELECT (DISTINCT) 字段1,字段2, ... (存在聚合函数) FROM 表1 (LEFT|RIGHT) JOIN 表2 ON 多表连接条件 WHERE 不包含聚合函数的过滤条件 GROUP 分组 HAVING 包含聚合函数的过滤条件 ORDERBY 字段1, 字段2 (ASC/DESC) LIMIT index, rows