百度面试题及详细答案(真实场景版)
1.面试官:二叉树的层序遍历怎么实现?追问:如果要实现锯齿形层序遍历,怎么修改?
答案:层序遍历核心是用BFS,也就是队列来实现,逐层处理节点。首先初始化一个队列,把根节点放进去,然后循环判断队列不为空,每次取出当前层的所有节点,遍历输出,再把每个节点的左右子节点依次加入队列,这样就能保证逐层遍历。比如LeetCode第102题,就是最基础的层序遍历,代码里我习惯用队列的size来控制每一层的节点数,避免混乱。
至于锯齿形层序遍历(LeetCode第103题),其实就是在层序遍历的基础上,加一个标志位控制方向。比如奇数层从左到右,偶数层从右到左,每次遍历
原创力文档

文档评论(0)