剑指 Offer 26. 树的子结构
判断一棵树是否是另一棵树的子结构,注意子结构与子树的区别
子结构不能只利用根节点进行对称性递归,需要构造辅助函数,判断当两棵树根节点值相同时一棵树是否为另一棵树子结构。
注意在辅助函数中,判断子树的异同时,需要用&&;
剑指 Offer 32 - I. 从上到下打印二叉树
二叉树的层次遍历,用一个队列存储每层的节点。
取出当前节点的val加入到ans中,同时将其左右子节点(如果有)加入到队列中。(取节点用poll())
剑指 Offer 32 - II. 从上到下打印二叉树 II
此题,异于上一题的点,在于每层单独列出来。
依旧同上一道题一般,将节点加入到队列中。
不同的是,当前只加入的val和当前节点的左右子节点,需要有限制。
那么只需要对出队的节点的个数限制即可。
用一个for()循环即可解决。
用for循环来取出当前层需要的节点。
剑指 Offer 32 - III. 从上到下打印二叉树 III
此题异于上一道题的点,在于,第一层从左到右,第二层从右到左。
那么只需要将记录当前层的容器,改成一个队列,控制val进入的顺序,再设置一个boolean标志即可。
需要注意的是,在加入答案的时候,将存储当前层的队列转换为List即可(new ArrayList<>(cur))。