leetcode971. 두 갈래 나무를 뒤집어서 일치하는 순서로 훑어보다

8553 단어 leetcode

leetcode971. 두 갈래 나무를 뒤집어서 일치하는 순서로 훑어보다


이 문제의 설명은 아직 제목이 명확하지 않아서 문제의 내용을 붙이지 않는다.

생각


앞의 순서를 반복해서 현재 노드와 대응하는voyage 값이 같지 않을 때false로 돌아갑니다.그리고 현재 노드의 왼쪽 노드가 다음voyage를 만족시키는지 보십시오. 만족하지 않으면 좌우 트리를 교환해야 합니다.
class Solution {
    public ArrayList<Integer> list=new ArrayList<>();
    public List<Integer> flipMatchVoyage(TreeNode root, int[] voyage) {
        if(root==null)return list;
        boolean f=traverse(root,voyage);
        if(!f){
            //false -1
            list=new ArrayList<>();
            list.add(-1);
        }
        return list;
    }
    public int n=0;//n 
    public boolean traverse(TreeNode root,int[] voyage){
        if(root==null){
            n--;// -1
            if(n==voyage.length-1)
                return true;
            else return false;
        }
        if(root.val!=voyage[n])return false;// 
        
        n++;
        
        if(root.left!=null){// 
            if(root.left.val!=voyage[n]){
                if(root.right!=null&&root.right.val==voyage[n]){
                    TreeNode tmp=root.left;
                    root.left=root.right;
                    root.right=tmp;
                    list.add(root.val);
                }
            }
        }
        boolean left=traverse(root.left,voyage);
        n++;
        boolean right=traverse(root.right,voyage);
        return left||right;// , true
    }
}

leetcode 55/100

좋은 웹페이지 즐겨찾기