对于对称二叉树,按照 根,左, 右的顺序 遍历 和 按照 根 右 左 的方式遍历出的结果是一样的
import java.util.LinkedList;
import java.util.List;
/**
*
*/
/***
* @author 18071
* @Date 2019年3月10日
* 功能:
***/
public class test {
public static void main(String args[]) {
TreeNode root =new TreeNode (1);
root.right=new TreeNode (2);
root.left=new TreeNode (3);
root.left.left=new TreeNode (7);
Solution s= new Solution ();
s.find(root);
}
}
class Solution {
public void find(TreeNode root) {
List list1=new LinkedList();
list1=qianxu(root,list1);
List list2=new LinkedList();
list2= emm(root,list2);
for(int i=0;i<list2.size();i++) {
// System.out.println("list2 is " +list2.get(i));
// System.out.println("list 1 is "+list1.get(i));
if(list1.get(i)!=list2.get(i)) {
System.out.println("不是镜像二叉树");
break;
}
}
}
public List qianxu(TreeNode root,List list) {//先根,左,右
if(root==null) {
return list;
}
else {
list.add(root.val);
qianxu(root.left,list);
qianxu(root.right,list);
}
return list;
}
public List emm(TreeNode root,List list2) {
if(root == null) {
return null;
}
else if(root!=null) {
list2.add(root.val);
System.out.println("list 2 在添加 "+ root.val);
emm(root.right,list2);
emm(root.left,list2);
}
return list2;
}
}
class TreeNode {
TreeNode left;
TreeNode right;
int val;
TreeNode(int x) {
this.val = x;
}
}
结果: