由中序遍历得到数组
用递归构造平衡二叉树
List<Integer> list = new ArrayList<>(); public TreeNode balanceBST(TreeNode root) { //根据数组进行平衡二叉树的创建 inOrder(root); return buildBST(0,list.size()); } public TreeNode buildBST(int begin,int end){ int mid = begin + (end - begin)/2; TreeNode node = new TreeNode(list.get(mid)); if(begin < mid) { node.left = buildBST(begin, mid); } if(mid+1 < end) { node.right = buildBST(mid + 1, end); } return node; } public void inOrder(TreeNode node){ //中序遍历得到数组 if(node == null){ return; }else { inOrder(node.left); list.add(node.val); inOrder(node.right); } }
——2020.6.23