LeetCode每日一题,617. Merge Two Binary Trees
先看题目描述
大意就是将两棵二叉树合并,合并规则是若两节点重复,就将其值相加作为新节点,若有一个为空,则以非空的那个为新节点
算法和思路
自己一开始的思路是把 t2 给合并到 t1 上,合并好后将 t1 返回,基本思路就是深度优先遍历两棵二叉树相同位置的各个节点,遍历过程中记录下来父节点,并记录一个标志位表示该节点是父节点的左子节点还是右子节点,若当前 t2 节点为空,则直接返回,因为我们是将 t2 合并到 t1 上;若当前 t1 节点为空,则将当前 t2 节点根据标志位设为父节点的左子节点或右子节点;若均不为空,则将 t2 节点的值加到 t1 节点的值上,然后继续深度优先遍历。
算法源码
1 | /** |
后来去看题解,发现题解是创建了棵新的二叉树,作为两棵二叉树的合并,代码更加简洁明了,不过运行效率差不多
1 | class Solution { |