[七日打卡]之第七卡:合并有序数组、相同的树、对称二叉树

277 阅读2分钟

合并有序数组

合并有序数组,第一反应就是双指针。用快指针和慢指针比较两个数组的当前元素,将比较小的元素放入目标数组中,指针此时+1,同时目标数组指针也向后移动一位。

需要考虑的是,在一个数组遍历完成之后,需要将比较长的数组剩余的元素统统移入目标数组,这一点是需要注意的。

这里使用了java中的System.arraycopy()方法。

相同的树

对于二叉树是否相同,第一眼眼看根节点,如果根节点都不相同,那还比较啥。。。

看完根节点,比较左子树,左子树也是先比较左子树的根节点,这里与上一步方法相同,可以考虑使用递归。

同理,右子树也可以像上面一样比较。

这里需要注意的是:两个二叉树是不是空的情况. 如果两个二叉树都是空,那就是相同。 两个二叉树中只有一个是空,那肯定是不同了。

对称二叉树

思路:

对称二叉树其实就是上一题"相同的树"的变种题。

上一题将两个二叉树的左节点与左节点比较,将右节点与右节点比较。

仔细看这道题,是将两个子树的左节点与右节点比较、右节点与左节点比较。

同理,在更深一层的子树中也是左节点与右节点比较、右节点与左节点比较。

这样我们同样可以使用上一题的递归解法。

今天就到这里了,明天见!~~~~