本文主要是介绍【数据结构与算法】二叉树子结构子树类问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
给定两颗二叉树A、B,判断二叉树B是否二叉树A的子结构。若是返回true, 不是返回false。
示例:
解题思路:
对树A与树B, 若A中某节点与树B根节点对应则向下判断。否则判断A的左节点是否对应树B根节点,或者A的右节点是否对应树B根节点。
因此需另写一递归函数,判断当前递归节点是否与B的根节点对应。
代码:
class Solution {public boolean isSubStructure(TreeNode A, TreeNode B) {if(B == null || A == null){return false;}return hasSame(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B);}public boolean hasSame(TreeNode A, TreeNode B){if(B == null){return true;}if(A == null || A.val != B.val){return false;} return hasSame(A.left, B.left) && hasSame(A.right, B.right);}
}
这篇关于【数据结构与算法】二叉树子结构子树类问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!