1.二叉树的最大深度:代码随想录 (programmercarl.com)
1.深度与高度的区别:高度是该节点到叶子节点的距离,从下向上计数,用后序遍历,深度是根节点到该节点的距离,从上往下计数,用的是前序遍历。
2.对于递归的一点小理解:在本题中,首先从最底层开始,触发了终止条件,return 0然后返回给上一级,这是第一步,然后再依次向上处理,体现了递归的自下而上的处理方式,这里最重要的点还在于要把终止条件以及其返回值确定好,这是第一步。
3.在n叉数的最大深度中相当于把比较左右子树的大小变成了比较所有子树的大小,要学会在一族数中取最大值的操作。即用for循环中加一个max函数。
2.二叉树的最小深度:代码随想录 (programmercarl.com)
1.要注意本题和最大深度的区别,虽然都是后续遍历,但是这里要考虑根节点左右子树一个为null一个不为null的情况,分别做讨论。
3.完全二叉树的节点个数:代码随想录 (programmercarl.com)
1.由于完全二叉树的特性,若一个节点的最左侧子树深度等于其最右侧子树深度的话,那此节点下的子树一定是满二叉树。
2.在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。<< 即为左移运算符(在c++中用左移运算符对于2的n次方更加方便)
3.本题有两个终止条件的判断:1、节点若为null,则返回0;节点若为满二叉树,则返回此二叉树所有的节点个数(注意:最后的叶子节点也是满二叉树,所以可以一直向后遍历,直到找到满二叉树,故节点是否为满二叉树能够成为终止条件。)