private static Node root;
public static void main(String[] args) {
root = createTree(root);
preOrderPrint(root);
System.out.println();
inOrderPrint(root);
System.out.println();
postOrderPrint(root);
}
//先序构造树
static Node createTree(Node add) {
String str = readDataFromConsole("Please input char:");
if (!str.equals(" ")) {
add = new Node();
add.elem = str;
add.left = createTree(add.left);
add.right = createTree(add.right);
}
//返回没有任何元素的节点
return add;
}
static String readDataFromConsole(String prompt) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
System.out.print(prompt);
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
/**
* 先序遍历
*
* @param root
*/
static void preOrderPrint(Node root) {
if (root != null) {
System.out.print(root.elem + "\t");
preOrderPrint(root.left);
preOrderPrint(root.right);
} else {
System.out.print("$" + "\t");
}
}
/**
* 中序遍历
*
* @param node
*/
static void inOrderPrint(Node node) {
if (node != null) {
//遍历左子树
inOrderPrint(node.left);
//输出节点
System.out.print(node.elem + "\t");
//遍历右子树
inOrderPrint(node.right);
} else {
System.out.print('$' + "\t");
}
}
/**
* 后序遍历
*
* @param node 节点
*/
static void postOrderPrint(Node node) {
if (node != null) {
inOrderPrint(node.left);
inOrderPrint(node.right);
System.out.print(node.elem + "\t");
} else {
System.out.print('$' + "\t");
}
}
static class Node {
String elem;
Node left;
Node right;
}
二叉树的遍历和先序创建(Java实现)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 递归 比较简单,直接看代码即可. 非递归 先序遍历 申请一个栈,记为s1,将头结点压栈. 每次从栈顶弹出节点nod...
- 最近看了一下大学的数据结构,🈶学到了以前没学到的东西看到了二叉树那一块,感觉二叉树是个很重要的东西,就看了一下底层...
- 如下图,对图中二叉树遍历: 先序为:ABDNCEFGHIJKLMOQP中序为:DNBCGFEAHJKILOQMP后...