题目
971. 翻转二叉树以匹配先序遍历
class Solution {
int i=0;
boolean flag;
List<Integer>res=new ArrayList<>();
public List<Integer> flipMatchVoyage(TreeNode root, int[] voyage) {
dfs(root,voyage);
if(flag){
List<Integer> ans = new ArrayList<>();
ans.add(-1);
return ans;
}
return res;
}
void dfs(TreeNode root,int []voyage){
if(root==null)return;
if(root.val!=voyage[i]){
flag=true;
return;
}
if(root.left!=null&&root.left.val!=voyage[i+1]){
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
res.add(root.val);
}
i++;
dfs(root.left,voyage);
dfs(root.right,voyage);
}
}