二叉树Leecode

二叉树Leecode

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public 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;
    }

   public static void main(String[] args) {

  }
}


class Solution {
   /**
    * 先序遍历
    * @param treeNode
    * @param res
    */
   public static void perTree(TreeNode treeNode,List<Integer> res)
  {
       if(treeNode == null)
           return;
       res.add(treeNode.val);
       perTree(treeNode.left,res);
       perTree(treeNode.right,res);
  }
   public List<Integer> preorderTraversal(TreeNode root) {
       List<Integer> res = new ArrayList<>();

       perTree(root,res);

       return res;
  }

   /**
    * 中序遍历
    * @param treeNode
    * @param res
    */
   public static void midTree(TreeNode treeNode,List<Integer> res)
  {
       if(treeNode == null)
      {
           return;
      }
       midTree(treeNode.left,res);
       res.add(treeNode.val);
       midTree(treeNode.right,res);
  }
   public List<Integer> inorderTraversal(TreeNode root) {
       List<Integer> res = new ArrayList<>();

       midTree(root,res);

       return res;
  }

   /**
    * 层序遍历
    * @param root
    * @return
    */
   public List<List<Integer>> levelOrder(TreeNode root) {

       if(root == null)
      {
           return new ArrayList<>();
      }

       Queue<TreeNode> queue = new LinkedList<>();
       List<List<Integer>> res = new ArrayList<>();

       queue.add(root);

       while(!queue.isEmpty())
      {
           List<Integer> subline = new ArrayList<>();
           int len = queue.size();

           for(int i = 0; i < len; i ++)
          {
               TreeNode poll = queue.poll();
               subline.add(poll.val);
               if(poll.left != null)
              {
                   queue.add(poll.left);
              }
               if(poll.right != null)
                   queue.add(poll.right);
          }
           res.add(subline);
      }
       return res;
  }

   /**
    * 返回最大深度
    * @param root
    * @return
    */
   public int maxDepth(TreeNode root) {
       if (root == null)
           return 0;
       return Math.max(maxDepth(root.left) + 1,maxDepth(root.right) + 1);
  }

   /**
    * 对称二叉树
    * @param root
    * @return
    */
   public boolean isSymmetric(TreeNode root) {
       if (root == null)
           return true;
       return isSymmetric1(root,root);
  }
   public static boolean isSymmetric1(TreeNode l,TreeNode r)
  {
       if(l == null && r == null)
           return true;
       if(l == null || r == null || r.val != l.val)
           return false;

       return isSymmetric1(l.left,r.right) && isSymmetric1(l.right,r.left);
  }
}

 
posted @ 2022-09-22 11:16  爽爽子的秃头生活  阅读(20)  评论(0)    收藏  举报