数据结构(树)

树形结构是一类重要的非线性数据结构。其中以树和二叉树最为常用。

树的概念

    树是n(n≥0)个结点的有限集。在任意一颗非空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,...,Tm,其中每一个集合本身又是一颗树,并且称为根的子树。

树的基本术语

    树的结点包含一个数据元素以及若干指向其子树的分支。结点拥有的子树数称为结点的。度为0的结点称为叶子或终端结点。度不为0的结点称为非终端结点或分支结点。除根节点之外,分支结点也称为内部结点。树的是树内各结点度的最大值。结点的子树的根称为该结点的孩子,相应的该结点称为孩子的双亲。同一个双亲的孩子之间互称为兄弟。结点的祖先是从根到该节点所经历分支上的所有的结点。反之,以某结点为根的子树中的任一结点都称为该节点的子孙。结点的层次从根开始定义,树中结点的最大层次称为根的深度或高度。

二叉树的概念

    二叉树是另一种树型结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,不能随意颠倒顺序。

    二叉树可以有5种基本的形态:



 

package arithmetic;


public class BiTreeImpl implements BiTreeOpI {

	static BiTree root;

	@Override
	public void createBiTree() {
		root = new BiTree(1);
		BiTree leftChild = new BiTree(2);
		root.setLeftChild(leftChild);
		BiTree rightChild = new BiTree(3);
		root.setRightChild(rightChild);

		leftChild.setLeftChild(new BiTree(4));
		leftChild.setRightChild(new BiTree(5));

		rightChild.setLeftChild(new BiTree(6));
		rightChild.setRightChild(new BiTree(7));
	}

	public static void main(String[] args) {
		BiTreeImpl biTreeImpl = new BiTreeImpl();
		biTreeImpl.createBiTree();
		System.out.print("先序:");
		biTreeImpl.preOrderTraverse(root);
		System.out.println();
		System.out.print("中序:");
		biTreeImpl.inOrderTraverse(root);
		System.out.println();
		System.out.print("后序:");
		biTreeImpl.postOrderTraverse(root);
	}

	@Override
	public void preOrderTraverse(BiTree root) {
		if(root != null) {
			System.out.print(" " + root.getData() + " ");
			preOrderTraverse(root.getLeftChild());
			preOrderTraverse(root.getRightChild());
		}
	}

	@Override
	public void inOrderTraverse(BiTree root) {
		if(root != null) {
			preOrderTraverse(root.getLeftChild());
			System.out.print(" " + root.getData() + " ");
			preOrderTraverse(root.getRightChild());
		}
		
	}

	@Override
	public void postOrderTraverse(BiTree root) {
		if(root != null) {
			preOrderTraverse(root.getLeftChild());
			preOrderTraverse(root.getRightChild());
			System.out.print(" " + root.getData() + " ");
		}
	}
}

猜你喜欢

转载自zhuzhaoyong.iteye.com/blog/2227559