给定两颗二叉树A和B,如何判断B是不是A的子结构,本文将分享一个方案用来解决此问题,欢迎各位感兴趣的开发者阅读本文。,在我的数据结构与算法实现系列文章——实现二叉搜索树中,我们知道了二叉树最多只能有两个子节点:左子节点、右子节点。那么,在本题中要判断是否包含,可以分为两步来实现:,如果树A的节点与树B的根结点相同,则执行进一步的判断(比对两棵树的子结构)得出比对结果,如果得出的结果为false,分别递归树A的左子节点与右子节点跟树B进行比对,直至任意一棵树的叶子节点,如果树B为null则代表树A中包含树B,返回true,如果树A为null则代表树A中不包含树B,返回false,如果比对的两个节点不等,则代表当前A的子树中不包含树B结构,返回false,否则,继续执行递归,直至任意一棵树的叶子节点,,通过上个章节的分析,我们已经得出了具体的思路,接下来,我们就将思路转换为代码,如下所示:,实现主函数,判断B是否为A的子结构:,递归树A将其与树B的节点进行比对,找到相同的节点再做进一步的比对,接下来,我们用思路分析章节中所举的例子来测试下上述函数能否正确执行。,,本文所用代码完整版请移步:
© 版权声明
文章版权归作者所有,未经允许请勿转载。