赞
踩
/** * Definition for a binary tree node. * 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; * } * } */ class Solution { public TreeNode constructMaximumBinaryTree(int[] nums) { return createTree(nums); } public TreeNode createTree(int[] nums){ //终止条件 //题目中说数组长度不等于0 所以不用判断数组为空的情况 if(nums.length == 1){ return new TreeNode(nums[0]); } //中 int maxValue = 0; int nodeIndex = 0; for(int i =0;i<nums.length;i++){ if(nums[i]>maxValue){ maxValue = nums[i]; nodeIndex = i; } } //创建中节点 TreeNode node = new TreeNode(maxValue); //向左右递归 //区间定义为左闭右开 需要向左或向右的空间内至少还有一个节点 才可以 if(nodeIndex>=1){ int[] newnums = Arrays.copyOfRange(nums,0,nodeIndex); node.left = createTree(newnums); } if(nums.length-nodeIndex>1){ node.right = createTree(Arrays.copyOfRange(nums,nodeIndex+1,nums.length)); } return node; } }
class Solution { public int lengthOfLongestSubstring(String s) { Map<Character,Integer> map = new HashMap<>(); if(s.length()==0) return 0; int left = 0; int max = 0; //遍历字符串 for(int i=0;i<s.length();i++){ if(map.containsKey(s.charAt(i))){ //如果重复 就将左指针移到下一位 left = Math.max(map.get(s.charAt(i))+1,left); } map.put(s.charAt(i),i); max = Math.max(max,i-left+1); } return max; } }
/** * Definition for a binary tree node. * 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; * } * } */ class Solution { public TreeNode mergeTrees(TreeNode root1, TreeNode root2) { //终止条件 if(root1==null) return root2; if(root2==null) return root1; //中 root1.val+=root2.val; //向左右递归 root1.left = mergeTrees(root1.left,root2.left); root1.right = mergeTrees(root1.right,root2.right); return root1; } }
/** * Definition for a binary tree node. * 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; * } * } */ class Solution { public TreeNode searchBST(TreeNode root, int val) { //终止条件 if(root==null || root.val == val) return root; //创建一个节点来接返回值 TreeNode res = null; if(val>root.val){ res = searchBST(root.right,val); } if(val<root.val){ res = searchBST(root.left,val); } return res; } }
/** * Definition for a binary tree node. * 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; * } * } */ class Solution { public TreeNode searchBST(TreeNode root, int val) { //迭代法 while(root!=null){ if(val>root.val){ root = root.right; }else if(val<root.val){ root = root.left; }else{ return root; } } return null; } }
/** * Definition for a binary tree node. * 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; * } * } */ class Solution { List<Integer> arr = new ArrayList<>(); public boolean isValidBST(TreeNode root) { traversal(root); for(int i=1;i<arr.size();i++){ if(arr.get(i)<=arr.get(i-1)){ return false; } } return true; } public void traversal(TreeNode node){ //终止条件 if(node==null) return; //中序遍历 左中右 //左递归 traversal(node.left); //中 arr.add(node.val); //右 traversal(node.right); } }
/** * Definition for a binary tree node. * 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; * } * } */ class Solution { TreeNode pre = null; public boolean isValidBST(TreeNode root) { //终止条件 if(root == null) return true; //左 boolean left = isValidBST(root.left); //中 if(pre!=null && pre.val>=root.val){ return false; } pre = root; //右 boolean right = isValidBST(root.right); return left && right; } }
/** * Definition for a binary tree node. * 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; * } * } */ class Solution { long max = Long.MIN_VALUE; public boolean isValidBST(TreeNode root) { //终止条件 if(root==null) return true; //中序遍历 boolean left = isValidBST(root.left); if(max>=root.val){ return false; }else{ max=root.val; } boolean right = isValidBST(root.right); return left && right; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。