- package 二叉树.反转二叉树;
-
- import 二叉树.TreeNode;
-
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Queue;
-
- public class Solution {
- public static void main(String[] args) {
- TreeNode root=new TreeNode(1);
- TreeNode node2=new TreeNode(2);
- TreeNode node3=new TreeNode(3);
- TreeNode node4=new TreeNode(4);
- TreeNode node5=new TreeNode(5);
- TreeNode node6=new TreeNode(6);
- TreeNode node7=new TreeNode(7);
- TreeNode node8=new TreeNode(8);
- root.setLeft(node2);
- root.setRight(node3);
- node2.setLeft(node4);
- node2.setRight(node5);
- node3.setRight(node6);
- node5.setLeft(node7);
- node5.setRight(node8);
- System.out.println(root);
- List
integers=new ArrayList<>(); - inorderTraversal(root,integers);
- System.out.println(integers);
- List
newRootIntegers=new ArrayList<>(); -
- TreeNode newRoot=invertTree(root);
- inorderTraversal(newRoot,newRootIntegers);
- System.out.println(newRootIntegers);
- }
- public static TreeNode invertTree(TreeNode root) {
- TreeNode node=null;
- if (root==null){
- return null;
- }
- invertTree(root.left);
- invertTree(root.right);
- node=root.right;
- root.right=root.left;
- root.left=node;
- return root;
- }
- public static void inorderTraversal(TreeNode root,List
integers ) { - if (root==null){
- return;
- }
- inorderTraversal(root.left,integers);
- integers.add(root.val);
- inorderTraversal(root.right,integers);
- }
-
- }
- package 二叉树.最大深度;
-
- import 二叉树.TreeNode;
-
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Queue;
-
- public class Solution {
- public static void main(String[] args) {
- TreeNode root=new TreeNode(1);
- TreeNode node2=new TreeNode(2);
- TreeNode node3=new TreeNode(3);
- TreeNode node4=new TreeNode(4);
- TreeNode node5=new TreeNode(5);
- TreeNode node6=new TreeNode(6);
- TreeNode node7=new TreeNode(7);
- TreeNode node8=new TreeNode(8);
- root.setLeft(node2);
- root.setRight(node3);
- node2.setLeft(node4);
- node2.setRight(node5);
- node3.setRight(node6);
- node5.setLeft(node7);
- node5.setRight(node8);
- // int max = maxDepth(root);
- int max = maxDepthMethodForLoop(root);
- System.out.println("----------二叉树最大深度为------"+max);
-
- }
- public static int maxDepth(TreeNode root) {
- int deep=0;
- if(root==null){
- return 0;
- }else{
- return Math.max( maxDepth(root.right), maxDepth(root.left))+1;
- }
- }
- public static int maxDepthMethodForLoop(TreeNode root) {
- int deep=0;
- Queue
queue=new LinkedList<>(); - queue.offer(root);
- while (!queue.isEmpty()){
- int size=queue.size();
-
- while (size>0){
- TreeNode treeNode=queue.poll();
- if(treeNode.left!=null){
- queue.offer(treeNode.left);
- }
- if(treeNode.right!=null){
- queue.offer(treeNode.right);
- }
- System.out.println(queue);
- System.out.println(queue.size());
- System.out.println(size);
-
- size--;
-
- }
-
- deep++;
- }
-
- return deep;
- }
-
- }
力扣
- package 二叉树.平衡二叉树;
-
- import 二叉树.TreeNode;
-
- import java.util.ArrayList;
- import java.util.List;
-
- public class Solution {
- public static void main(String[] args) {
- TreeNode root=new TreeNode(1);
- TreeNode node2=new TreeNode(2);
- TreeNode node3=new TreeNode(3);
- TreeNode node4=new TreeNode(4);
- TreeNode node5=new TreeNode(5);
- TreeNode node6=new TreeNode(6);
- TreeNode node7=new TreeNode(7);
- TreeNode node8=new TreeNode(8);
- root.setLeft(node2);
- root.setRight(node3);
- node2.setLeft(node4);
- node2.setRight(node5);
- node3.setRight(node6);
- node5.setLeft(node7);
- node5.setRight(node8);
- int balanced = isBalanced(root);
- System.out.println(balanced);
- }
- public static int isBalanced(TreeNode root) {
- if(root==null){
- return 0;
- }
- int left=isBalanced(root.left);
- int right=isBalanced(root.right);
- System.out.println(left);
- System.out.println(right);
- if(left==-1||right==-1||Math.abs(left-right)>1){
- return -1;
- }
- return Math.max(left,right)+1;
-
- }
-
- }