前言
为什么学习数据结构和算法?
1.直面大厂的高薪。
2.学习编程的语言。
3.输出优雅的代码和高性能的程序。
每日练习2题,希望大家都能收获高薪offer,实现自由跳槽。
实现原理
主要判断二叉树的以中间线为轴,两边的对称的位置节点是否相等。主要采用两个递归实现各节点对称点的值比较。
其中1个递归是根的左节点与根的右节点持续递归到底,比较两个值是否相等。
另一个递归是根的右节点与根的左节点持续递归到底,比较两个值是否相等。
具体代码实现
package test7;
import java.util.List;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class Solution {
TreeNode root;
public boolean isSymmetric(TreeNode root) {
return check(root,root);
}
public boolean check(TreeNode p,TreeNode q){
if(p==null&&q==null){
return true;
}
if(p==null||q==null){
return false;
}
return p.val==q.val&&check(p.left,q.right)&&check(p.right,q.left);
}
public static void main(String[] args) {
Solution solution=new Solution();
TreeNode treeNode=new TreeNode(1);
treeNode.left=new TreeNode(2);
treeNode.left.left=new TreeNode(3);
treeNode.left.right=new TreeNode(4);
treeNode.right=new TreeNode(2);
treeNode.right.left=new TreeNode(4);
treeNode.right.right=new TreeNode(3);
boolean res=solution.isSymmetric(treeNode);
System.out.println(res);
}
}
QA:待定