두 갈래 나무가 같은지 아닌지를 판단하다

4811 단어
제목: 두 갈래 나무가 같은지 아닌지 판단하기
사고방식: 귀속과 교체
반복:
public static boolean isSameRec(TreeNode root1,TreeNode root2){
        if(root1 == null && root2 == null){
            return true;
        }else if(root1 == null || root2 == null){
            return false;
        }else if(root1.val != root2.val){
            return false;
        }
        
        boolean left = isSameRec(root1.left,root2.left);
        boolean right = isSameRec(root1.right,root2.right);
        return left&right;
    }

교체: 교체는 주의해야 한다. 두 개의 보조 창고를 빌렸는데 주의해야 할 것은 어떤 노드의 왼쪽 아이나 오른쪽 아이가null이면 창고에 추가해야 한다는 것이다.
public static boolean isSameTree(TreeNode root1,TreeNode root2){
        if(root1 == null && root2 == null){
            return true;
        }else if(root1 == null || root2 == null){
            return false;
        }else if(root1.val != root2.val){
            return false;
        }
        
        Stack stack1 = new Stack();
        Stack stack2 = new Stack();
        stack1.push(root1);
        stack2.push(root2);
        
        while(!stack1.isEmpty() && !stack2.isEmpty()){
            TreeNode n1 = stack1.pop();
            TreeNode n2 = stack2.pop();
            if(n1 == null && n2 == null){
                continue;
            }
            else if(n1 != null && n2 != null && n1.val == n2.val){
                stack1.push(n1.left);
                stack1.push(n1.right);
                stack2.push(n2.left);
                stack2.push(n2.right);
            }else {
                return false;
            }
        }
        
        return true;
    }

 
전재 대상:https://www.cnblogs.com/lfdingye/p/7365479.html

좋은 웹페이지 즐겨찾기