代码随想录算法训练营day15| 110.平衡二叉树 (优先掌握递归)、 257. 二叉树的所有路径 (优先掌握递归)、 404.左叶子之和 (优先掌握递归)、 222.完全二叉树的节点个数(优先掌握
一、110.平衡二叉树 优先掌握递归题目链接/文章讲解/视频讲解https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html初见思路学习代码随想录之后平衡二叉树左右子树的高度差相差小于1依旧是前序求深度后序求高度实现方面给出的主函数是接收树节点然后返回值是布尔类型这个没法作为递归函数所以需要再定义一个子函数作为递归函数接收树节点返回值是深度或者是高度一般是利用后序遍历来求高度在递归函数中终止条件是如果传入节点为空则返回0然后是看两个子节点的变量值如果是-1已经非平衡则返回-1后序对中间节点进行处理比较两个子节点的返回值相差绝对值如果大于1则返回-1如果《1则返回较大的那个子节点深度1第二遍可以自己完成实现。左右子树之差小于等于1都为平衡树。二、257. 二叉树的所有路径 优先掌握递归初见思路返回所有路径其实需要遍历所有节点有选择的将路径添加进集合中学习代码随想录之后收集路径前序遍历这道题涉及到了回溯实现方面可以理解思路第一遍实现需要参照答案第二遍基本可以自己完成三、404.左叶子之和 优先掌握递归初见思路学习代码随想录之后通过父节点来判断子节点是否是左叶子节点父节点的左子节点不为零然后左子节点的左右子节点均为零则该左子节点为左叶子节点实现方面这个参数和返回值一样 就可以直接使用给定的函数了。后序遍历终止条件为if(root null) return 0;单层递归逻辑如果这个节点是左叶子节点的话则把值记录并且把目前的值和左子树上的左叶子节点的和以及右子树上的左叶子节点的和做加和。则最终返回的int值就是所有左叶子节点的和了。四、222.完全二叉树的节点个数优先掌握递归学习代码随想录之后其实就是要遍历整个二叉树记录所有的节点相加为sum返回值为int值传入参数为TreeNode实现方面递归代码实现起来还是挺简洁的后序遍历进行一个加和。给定函数中再嵌套一个递归函数就可以。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2423472.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!