java--두 그루의 두 갈래 나무 A, B를 입력하여 B가 A의 하위 구조인지 판단한다.(ps: 우리는 빈 나무가 임의의 나무의 하위 구조가 아니라고 약속한다)

1272 단어 두 갈래 나무
제목 설명: 두 그루의 두 갈래 나무 A, B를 입력하여 B가 A의 하위 구조인지 판단한다.(ps: 빈 트리는 임의의 트리의 하위 구조가 아니라고 약속합니다) 사고방식: 먼저 표지 위치result =false를 설정합니다. 일치하는 result는true입니다. 그렇지 않으면 기본적으로false로 돌아갑니다.뿌리 노드가 같은지 아닌지를 판단하고, 같으면 귀속 호출 방법, 뿌리 노드가 다르면tree1의 왼쪽 나무와tree2가 같은지 판단하고, 다르면 오른쪽 나무와tree2가 같은지 판단한다.두 그루의 나무가 모두 비어 있지 않아서 계속 판단하고, 트리2가 비어 있으면 설명이 일치하고, 반복해서 완성된다.트리1이 비어 있으면, 트리1이 비어 & & 트리2가 비어 있지 않으면 일치하지 않거나, 트리1이 비어 있으면, 트리2가 비어 있으면 일치하는 것을 설명합니다.
// 
class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;
    }
}
public static boolean HasSubtree(TreeNode root1, TreeNode root2) {
		boolean result=false;
		if(root1!=null&&root2!=null){
			if(root1.val=root2.val){
			doesTree1havetree2(root1,root2);
			}
			if(!result){
			doesTree1haveTree2(root1.left,root2);
			}
			if(!result){
			doesTree1haveTree2(root1.right,root2);
		}
			
}

public static boolean doesTree1haveTree2(TreeNode node1,TreeNode node2){
	
	if(node2==null){
	return true;
	}
	if(node1==null){
	return false;
	}
	if(node1.val!=node2.val){
	return false;
	}
	return doesTree1haveTree2(node1.left,node2.left)&&doesTree1haveTree2(node1.right,node2.right);
}
	}

좋은 웹페이지 즐겨찾기