title: 对称的二叉树 date: 2019-08-21T11:00:41+08:00 draft: false categories: offer
boolean isSymmetrical(TreeNode pRoot) {
LinkedList<Integer> scanner = new LinkedList<>();
LinkedList<Integer> symmetricalScanner = new LinkedList<>();
preScanner(scanner, pRoot);
symmetricalPreScanner(symmetricalScanner, pRoot);
return scanner.equals(symmetricalScanner);
}
/**
* 普通的前序遍历
* @param res
* @param root
*/
private void preScanner(LinkedList<Integer> res, TreeNode root) {
if (root == null) {
res.addLast(null);
return;
}
res.addLast(root.val);
preScanner(res, root.left);
preScanner(res, root.right);
}
/**
* 先右再左的前序遍历
* @param res
* @param root
*/
private void symmetricalPreScanner(LinkedList<Integer> res, TreeNode root) {
if (root == null) {
res.addLast(null);
return;
}
res.addLast(root.val);
symmetricalPreScanner(res, root.right);
symmetricalPreScanner(res, root.left);
}