java——二叉树遍历

原创 2015年07月08日 17:25:08

今天遇到一个面试题,构建一个二叉树,并分别打印四个分支。




import java.util.LinkedList;
import java.util.List;

public class BinaryTree {
	private String[] array = { "A", "B", "C", "D", "E", "F", "G" };
	private static List<Node> nodeList = null;

	private static class Node {
		Node leftChild;
		Node rightChild;
		String data;

		Node(String newData) {
			leftChild = null;
			rightChild = null;
			data = newData;
		}
	}

	public void createBinTree() {
		nodeList = new LinkedList<Node>();
		for (int i = 0; i < array.length; i++) {
			nodeList.add(new Node(array[i]));
		}
		for (int parentIndex = 0; parentIndex < array.length / 2 - 1; parentIndex++) {
			// 左
			nodeList.get(parentIndex).leftChild = nodeList
					.get(parentIndex * 2 + 1);
			// 右
			nodeList.get(parentIndex).rightChild = nodeList
					.get(parentIndex * 2 + 2);
		}
		//last父节点
		int lastParentIndex = array.length / 2 - 1;
		//这里可以加判断,因为这里只有7个所以直接写了。
		nodeList.get(lastParentIndex).leftChild = nodeList.get(lastParentIndex * 2 + 1);
		nodeList.get(lastParentIndex).rightChild = nodeList.get(lastParentIndex * 2 + 2);
	}

	/**
	 * 遍历
	 */
	public static void post1(Node root) {
		if (root == null)
			return;
		System.out.print(root.data);
		post1(root.leftChild);
	}

	public static void post3(Node root) {
		if (root == null)
			return;
		System.out.print(root.data);
		post2(root.rightChild);
	}

	public static void post2(Node root) {
		if (root == null)
			return;
		System.out.print(root.data);
		post3(root.leftChild);
	}

	public static void post4(Node root) {
		if (root == null)
			return;
		System.out.print(root.data);
		post4(root.rightChild);
	}

	public static void main(String args[]) {
		BinaryTree tree = new BinaryTree();
		tree.createBinTree();
		Node root = nodeList.get(0);
		// 输出
		post1(root);
		System.out.println();
		post2(root);
		System.out.println();
		post3(root);
		System.out.println();
		post4(root);
	}
}

效果:


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

二叉树的遍历(Java)

树可以以不同的方式遍历。以下是遍历树的常用方法。深度优先遍历:(a)中序遍历(左、根、右):4 2 5 1 3 (b)先序遍历(根、左、右):1 2 4 5 3 (c)后序遍历(左、右、根) :...

二叉树的遍历 Java

二叉树的遍历分为三种:先序遍历,中序遍历和后序遍历

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Java二叉树遍历

用java实现二叉树的遍历算法,先编写二叉树类BinaryTree,代码如下:public class BinaryTree { int data; //根节点数据 BinaryTree ...

JAVA 二叉树遍历

package edu.cumt.jnotnull; import java.util.Stack; public class BinaryTree { protect...

Java 二叉树遍历

今天练习用java实现二叉树的遍历算法,首先我先编写二叉树类BinaryTree,代码如下: package package2; public class BinaryTree {   ...

java二叉树遍历

import java.util.Stack;/** 二叉树节点 */class BTNode { private char key; private BTNode left, right; publ...

二叉树的遍历(java)

二叉树的遍历分为中序,前序,后序;就是利用函数递归来实现的遍历,没啥好说的,直接上代码:class TreeNode { int value; TreeNode left_node; ...

二叉树java遍历

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

java 二叉树的遍历

看到之前用c写的二叉树的遍历,闲着无聊,用java来实现一下。 import java.io.BufferedReader; import java.io.IOException; import ja...

JAVA遍历二叉树

二叉树的概念    二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。当集合为空时,称该...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)