刷题日记7
100. 相同的树:
开启二叉树啦~立志要啃下它!!!
这题其实就是遍历一下两棵树就可以了。可以采取任何搜索方式,递归,非递归。为了练手,我把递归和dfs,bfs都写了一遍。

101. 对称二叉树:
这题其实和100.相同的树是同样的解题思路。

104. 二叉树的最大深度:
这题用递归,如果root==null,返回0,否则返回左子树或者右子树的较大值+1。

111. 二叉树的最小深度:
和上题具有相似之处,还要添加如果root.left为null,返回右子树+1,如果root.right为null,返回左子树+1。

112. 路径总和:
用栈stack<pair<TreeNode*,int>> stk存储节点和到该节点的路径和。如果root==null,直接返回false,这题有个关键在于判断叶节点,一定要left和right同时为null才可以。
我在一开始想用递归做,但是写不出来,用以上方法AC之后,看了题解,关键在于递归的是sum-root.val。

222. 完全二叉树的节点个数:
用一个递归,如果root为null,返回0,否则返回左子树的节点数+右子树的节点数+1(根节点)。

226. 翻转二叉树:
用栈stack<TreeNode*> stk存储节点,交换top的左右子树,如果左子树不null则加入stk,右子树亦然。
又是想用递归但不会的一题,看了题解。如果root为null,返回null,否则交换左右子树,再递归交换以左右子树为根的左右子树,返回root。