Java创建二叉树

二叉树的值保存在数组中,以0作为分隔,数字0表示空节点,数组

public static final int[] TREE_VALUE = new int[]{1,2,3,0,4,5,0,0,6,0,0,7,0,0,8,0,9,10,0,0,0};

表示的二叉树是:

/**
 * 维护构建二叉树的值和值索引
 */
public static class TreeValue {
	public static int index = 0;
	public static final int[] TREE_VALUE = new int[]{1,2,3,0,4,5,0,0,6,0,0,7,0,0,8,0,9,10,0,0,0};
}

/**
 * Create A Binary Tree with TreeValue
 *
 * @node: a tree node
 * @i: the index of tree value
 */
public static TreeNode createTree(TreeNode node, int i) {
	if (0 == TreeValue.TREE_VALUE[i]) {
		return null;
	} else {
		node.setVal(TreeValue.TREE_VALUE[i]);
	}

	TreeNode leftChild = new TreeNode();
	node.left = createTree(leftChild, ++TreeValue.index);
	TreeNode rightChild = new TreeNode();
	node.right = createTree(rightChild, ++TreeValue.index);

	return node;
}

/**
 * Definition for binary tree
 */
public static class TreeNode {
	int val;
	TreeNode left;
	TreeNode right;

	TreeNode() {
		left = null;
		right = null;
	}
	TreeNode(int val) {
		this.val = val;
		left = null;
		right = null;
	}

	public void setVal(int val) {
		this.val = val;
	}
}

public static void main(String[] args) {
	TreeNode root = new TreeNode();
	root = createTree(root, index);
}

Java创建二叉树

时间: 2024-09-29 09:08:57

Java创建二叉树的相关文章

java创建二叉树并递归遍历二叉树

二叉树类代码: package binarytree; import linkqueue.LinkQueue; public class BinaryTree { class Node { public Object data; public Node lchild; public Node rchild; public Node(Object data) { this.data = data; this.lchild = null; this.rchild = null; } } //根节点

Java实现二叉树的创建、递归/非递归遍历

近期复习数据结构中的二叉树的相关问题,在这里整理一下 这里包含: 1.二叉树的先序创建 2.二叉树的递归先序遍历 3.二叉树的非递归先序遍历 4.二叉树的递归中序遍历 5.二叉树的非递归中序遍历 6.二叉树的递归后序遍历 7.二叉树的非递归后序遍历 8.二叉树的层次遍历 这里感谢博客http://blog.csdn.net/skylinesky/article/details/6611442的指导 /**二叉树的结点定义*/ class Node<T>{ private T value; pr

Java实现二叉树的创建和遍历操作(有更新)

博主强烈建议跳过分割线前面的部分,直接看下文更新的那些即可. 最近在学习二叉树的相关知识,一开始真的是毫无头绪.本来学的是C++二叉树,但苦于编译器老是出故障,于是就转用Java来实现二叉树的操作.但是二者原理是一致的,而且实现的方式也是大同小异! 下面就让我们来看看代码吧. 1.首先我们需要创建一个二叉树的节点类,便于我们对树的操作,当然了,你也可以在二叉树类的内部将节点类声明为内部类,但是这样会降低操作的灵活性.我才用的是单独创建一个BinaryTreeNode类,代码如下: package

java实现二叉树遍历

package com.tree.demo; public class BinaryTree { int data; // 根节点数据   BinaryTree left; // 左子树 BinaryTree right; // 右子树 public BinaryTree(int data) // 实例化二叉树类 { this.data = data; left = null; right = null; } public void insert(BinaryTree root, int dat

java实现二叉树及遍历、删除

java实现二叉树及遍历.删除 个人网站:多猫影视[可以看各大网站的VIP视频]www.duomao.xyz 二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: (1)空二叉树——如图(a): (2)只有一个根结点的二叉树——如图(b): (3)只有左子树——如图(c): (4)只有右子树——如图(d): (5)完全二叉树——如图(e). 注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形.[1] 类型 (1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它

Java实现二叉树先序,中序,后序遍历

以下是我要解析的一个二叉树的模型形状 接下来废话不多直接上代码 一种是用递归的方法,另一种是用堆栈的方法: 首先创建一棵树: 节点对象: 1 public class Node { 2 //节点数值 3 private int data; 4 //左子节点 5 private Node leftNode; 6 //右子节点 7 private Node rightNode; 8 9 public Node(int data, Node leftNode, Node rightNode) { 10

Java实现二叉树地遍历、求深度和叶子结点的个数

一.分析 二叉树是n个结点所构成的集合,它或为空树,或为非空树.对于非空树,它有且仅有一个根结点,且除根结点以外的其余结点分为两个互不相交的子集,分别称为左子树和右子树,它们本身又都是二叉树. 显而易见,二叉树具有递归的性质,因此表示二叉树的结点至少要包含3个域:数据域.左指针.右指针.在Java中,我们可以将二叉树的结点视为一个类,其中含有左子树地址.右子树地址和数据三个属性,每个结点即使类的实例化对象.因为二叉树的递归性质,所以我们可以通过递归来实现二叉树地求深度.求叶子结点的个数.先序.中

用java实现二叉树的遍历算法

用java实现二叉树的遍历算法用java实现二叉树的遍历算法,编写二叉树类BinaryTree代码如下:package package2; public class BinaryTree { int data; //根节点数据BinaryTree left; //左子树BinaryTree right; //右子树 public BinaryTree(int data) //实例化二叉树类{this.data = data;left = null;right = null;} public vo

创建二叉树、创建链表等

方法一: 1 #include <iostream>//创建二叉树,要用二级指针 2 3 using namespace std; 4 5 typedef struct TreeNode 6 { 7 char data; 8 struct TreeNode *left; 9 struct TreeNode *right; 10 }BiTree; 11 12 void creatBitree(BiTree **T) 13 { 14 char ch; 15 cin >> ch; 16