剑指offer之面试题18:树的子结构
题目:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
思路:
//1、遍历二叉树pRoot1,找到和pRoot2根结点相等的结点//2、在对这个节点进行判断,是否其内部和PRoot2的结构完全相等
代码:
/*structTreeNode{intval;structTreeNode*left;structTreeNode*right;TreeNode(intx):val(x),left(NULL),right(NULL){}};*/classSolution{public:boolJudgeSub(TreeNode*pRoot1,TreeNode*pRoot2){//一定要先判断PRoot2,在判断proot1if(pRoot2==NULL){returntrue;}if(pRoot1==NULL){returnfalse;}if(pRoot1->val==pRoot2->val){returnJudgeSub(pRoot1->left,pRoot2->left)&&JudgeSub(pRoot1->right,pRoot2->right);}else{returnfalse;}}//1、遍历二叉树pRoot1,找到和pRoot2根结点相等的结点//2、在对这个节点进行判断,是否其内部和PRoot2的结构完全相等boolHasSubtree(TreeNode*pRoot1,TreeNode*pRoot2){boolresult=false;if(pRoot1!=NULL&&pRoot2!=NULL){if(pRoot1->val==pRoot2->val){result=JudgeSub(pRoot1,pRoot2);}if(!result){result=HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2);}}returnresult;}};
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。