三要素解决递归问题

三要素解决递归问题解决递归问题的一些个人看法 三消递归查找

         本文运用递归来解决二叉树的一些基本问题,核心思想是紧抓三要素+ 一理解

三要素:

1) 终止条件
2) 本级递归要干什么
3) 方法的返回值是什么

一理解:

        解决递归问题,一定要从宏观上、广义上去看问题,千万不要纠结每一次递归在干什么,抓住起初的一级递归即可,否则会陷入无限套娃中

以下题为例

100. 相同的树 - 力扣(LeetCode)

 

上图第二步,在判断两颗二叉树是否相同的时候就需要用到宏观理解

上java代码

public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q==null){ // 两颗树都是空数,看做相同树 return true; } if(p==null||q==null){ // 一颗空树,另一颗非空树 return false; } if(p.val!=q.val){ // 结点值不等 return false; } if(!isSameTree(p.left,q.left)){ // 左节点代表的左子树不是相同树 return false; } if(!isSameTree(p.right,q.right)){ // 右节点代表的右子树不是相同树 return false; } // 两颗非空树满足上面三种情况,才是相同树 return true; }

利用逻辑与("&&")的 短路特性简化代码

public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q==null){ return true; } if(p==null||q==null){ return false; } if(p.val!=q.val){ return false; } return p.val==q.val&&isSameTree(p.left,q.left)&&isSameTree(p.right,q.right); }

 个人理解:

笔者初学java和数据结构,理解不太透彻,如果描述不恰当,欢迎指正!!!

另外本文参考博客https://lyl0724.github.io/2020/01/25/1/

 

 

今天的文章 三要素解决递归问题分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-31 12:30
下一篇 2024-12-31 12:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/97832.html