给定一个排序数组,如何构造一个什么是最佳二叉排序树树

实现二叉排序树, 并分别用先序、中序、后序输出
public class TreeTest {
class TreeNode {
TreeNode leftN
TreeNode rightN
public TreeNode(int val) {
this.val =
leftNode =
rightNode =
private TreeNode root =
/*构建一棵二叉排序树*/
public void buildTree(int[] array) {
for(int i=0; i&array. i++) {
insertNode(array[i]);
public void insertNode(int data) {
TreeNode newNode = new TreeNode(data);
if(root == null) {
root = newN
TreeNode current =
while(true) {
if(data & current.val) {
current = current.leftN
if(current == null) {
parent.leftNode = newN
current = current.rightN
if(current == null) {
parent.rightNode = newN
* 先序遍历
public void firstTrace(TreeNode root) {
if(root != null) {
System.out.print(root.val+" ");
firstTrace(root.leftNode);
firstTrace(root.rightNode);
public void firstTrace() {
this.firstTrace(this.root);
* 中序遍历
public void midTrace(TreeNode root) {
if(root != null) {
midTrace(root.leftNode);
System.out.print(root.val+" ");
midTrace(root.rightNode);
public void midTrace() {
this.midTrace(root);
* 后序遍历
public void postTrace(TreeNode root) {
if(root != null) {
postTrace(root.leftNode);
postTrace(root.rightNode);
System.out.print(root.val+" ");
public void postTrace() {
this.postTrace(root);
public static void main(String[] args) {
TreeTest tt = new TreeTest();
int[] array = {2, 8, 7, 4, 9, 3, 1, 6, 7, 5};
tt.buildTree(array);
tt.firstTrace(); System.out.println();
tt.midTrace();
System.out.println();
tt.postTrace();
没有更多推荐了,请用下列一组整数构造一颗二叉排序树,要求写出详细构造过程
[问题点数:20分,结帖人FULIQIANG1]
本版专家分:0
结帖率 91.67%
CSDN今日推荐
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐博客分类:
import java.util.LinkedL
public class CreateBSTfromSortedArray {
* 题目:给定一个排序数组,如何构造一个二叉排序树
public static void main(String[] args) {
int[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
CreateBSTfromSortedArray bst = new CreateBSTfromSortedArray();
Node root = bst.createBST(data);
bst.inOrder(root);
System.out.println();
bst.levelOrder(root);
public Node createBST(int[] data) {
if (data == null || data.length == 0) {
Node[] nodes = createNode(data);
return createBSTHelp(nodes, 0, data.length - 1);
//Recursion.Node[start...end],find its root.Then find left child and right child for the root.
public Node createBSTHelp(Node[] nodes, int start, int end) {
if (start & end) {
int mid = start + (end - start) / 2;
if (start == end) {
return nodes[mid];
Node root = nodes[mid];
root.left = createBSTHelp(nodes, start, mid - 1);
root.right = createBSTHelp(nodes, mid + 1, end);
public Node[] createNode(int[] data) {
int len = data.
Node[] nodes = new Node[len];
for (int i = 0; i & i++) {
nodes[i] = new Node(data[i]);
private static class Node {
Node(int data) {
this.data =
public void levelOrder(Node node) {
if (node == null)
LinkedList&Node& queue = new LinkedList&Node&();
queue.addLast(node);
while (!queue.isEmpty()) {
Node curNode = queue.removeFirst();
System.out.print(curNode.data + " ");
if (curNode.left != null) {
queue.addLast(curNode.left);
if (curNode.right != null) {
queue.addLast(curNode.right);
public void inOrder(Node node) {
if (node == null) {
inOrder(node.left);
System.out.print(node.data + " ");
inOrder(node.right);
bylijinnan
浏览: 507833 次
来自: 深圳
Java读源码之Netty深入剖析网盘地址:https://p ...
写得有趣 ^_^
第二个方法很好
&script&alert(&close ...
39行有个bug:&int j=new Random ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'数据结构课程设计_二叉排序树的实现_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据结构课程设计_二叉排序树的实现
&&数据结构二叉排序树的实现以及与数组的查找效率分析
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩24页未读,
定制HR最喜欢的简历
你可能喜欢序列{2,3,1,7,5,11,6,9}如何构造二叉排序树,并写出后序遍历_百度知道
序列{2,3,1,7,5,11,6,9}如何构造二叉排序树,并写出后序遍历
我有更好的答案
第一个单元格输入1,第二个单元格输入2,选中两个单元格,向下拖。在一个单元格输入1,选中这个单元格,编辑-填充-序列,序列选择“列”,终止值输入15,确定。在一个单元格输入1,选中这个单元格,按住Ctrl键,鼠标指向填充柄,按住左键向下拖。
采纳率:88%
为您推荐:
其他类似问题
二叉排序树的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 画出一组无序数组的二叉排序树 的文章

 

随机推荐