好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

剑指Offer之Java算法习题精讲二叉树与链表

题目一

 解法

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
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;
      }
  }
}

 

题目二

 解法

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
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);
  }
}

 

题目三

 解法

/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
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;
  }
}

 

题目四

 解法

/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
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 二叉树内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/wai_58934/article/details/123449047

查看更多关于剑指Offer之Java算法习题精讲二叉树与链表的详细内容...

  阅读:22次