自上而下打印二叉树
python 短小精悍,golang 简单高效
题面
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
给定二叉树 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回
[3,9,20,15,7]
python
- 队列 边进边出
def levelOrder(root: TreeNode) -> List[int]: rs = [] q = [root] while len(q): cur = q.pop(0) cur and rs.append(cur.val) cur and cur.left and q.append(cur.left) cur and cur.right and q.append(cur.right) return rs
golang
- 层序遍历 层层递进
func levelOrder(root *TreeNode) []int { var rs []int for level :=[]*TreeNode{root};len(level)>0;{ tmp := make([]*TreeNode, 0) for i:=0;i<len(level);i++{ if level[i] != nil { rs = append(rs, level[i].Val) if level[i].Left != nil { tmp = append(tmp, level[i].Left) } if level[i].Right != nil{ tmp = append(tmp, level[i].Right) } } } level=tmp } return rs }
性能
本作品采用《CC 协议》,转载必须注明作者和本文链接