题目一
解法
class Solution {
public boolean isBalanced(TreeNode root) {
if(root==null){
return true;
}else{
return Math.abs(method(root.left) - method(root.right)) <= 1&&isBalanced(root.left) && isBalanced(root.right);
}
}
public int method(TreeNode root){
if(root==null){
return 0;
}else{
return Math.max(method(root.left),method(root.right))+1;
}
}
}
题目二
解法
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null) return true;
return method(root.left,root.right);
}
public boolean method(TreeNode l,TreeNode r){
if(l==null&&r==null) return true;
if(l==null||r==null||l.val!=r.val) return false;
return method(l.left,r.right)&&method(l.right,r.left);
}
}
题目三
解法
class Solution {
public ListNode deleteNode(ListNode head, int val) {
ListNode temp = new ListNode(-1);
temp.next = head;
ListNode ans = temp;
while(temp.next!=null){
if(temp.next.val==val){
temp.next = temp.next.next;
}else{
temp = temp.next;
}
}
return ans.next;
}
}
题目四
解法
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
}
到此这篇关于剑指Offer之Java算法习题精讲二叉树与链表的文章就介绍到这了,更多相关Java 二叉树内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!