二叉树的创建有两种方式,一种是递归方式创建,另外一种是非递归方式创建,其中后者比较难,这里使用递归方式创建二叉树。
要求:使用前序序列的方式输入若干个字符,如"
abc,,de,g,,f,,,
",其中,','表示是空节点,根据该字符序列输出前序遍历字符串,中续遍历字符串,后序遍历字符串。
分析问题,如果使用C语言比较方便实现,使用java稍微麻烦一点,需要手动结束输入,这里使用了标识变量flag判断输入的结束。
package com.kdyzm.bittree; class Node { char data; Node lchild; Node rchid; } public class Main { private static boolean flag = false; public static void main(String[] args) throws Exception { Node root = createPreBitTree(); preOderTraverse(root); System.out.println(); inOrderTraverse(root); System.out.println(); endOrderTraverse(root); } private static void preOderTraverse(Node root) { if (root != null) { System.out.print(root.data); preOderTraverse(root.lchild); preOderTraverse(root.rchid); } } private static void endOrderTraverse(Node root) { if (root != null) { endOrderTraverse(root.lchild); endOrderTraverse(root.rchid); System.out.print(root.data); } } private static void inOrderTraverse(Node node) { if (node != null) { inOrderTraverse(node.lchild); System.out.print(node.data); inOrderTraverse(node.rchid); } } private static Node createPreBitTree() throws Exception { if (flag == true) { return null; } Node node = null; char ch = (char) System.in.read(); if (ch == '\n') { flag = true; return null; } if (ch == ',') { node = null; } else { node = new Node(); node.data = ch; node.lchild = createPreBitTree(); node.rchid = createPreBitTree(); } return node; } }
测试用例:
输入
abc,,de,g,,f,,,
输出
abcdegf
cbegdfa
cgefdba
abc,,de,g,,f,,,
输出
abcdegf
cbegdfa
cgefdba
输出分别是前序遍历、中序遍历、后序遍历的结果。
相关推荐
/****头文件"head.h"**********/ #include<stdio.h> #include<math.h> ...// 先序遍历二叉树T if (T) { printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } }
数据结构树和二叉树遍历二叉树和线索二叉树PPT学习教案.pptx
该程序为数据结构中基本的二叉树创建与遍历,按照先序遍历输入数据,并可获得二叉树的深度和叶子个数。本程序已使用VS2008调试成功。
二叉树的中序、前序、后序的递归、非递归遍历算法
数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例...
数据结构二叉树的源代码包含二叉树的基本操作: 各种遍历,深度计算
C语言数据结构实现二叉树的建立与遍历.cpp
数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版). 数据结构 二叉树三种遍历的非递归算法(背诵版).
数据结构的二叉树的遍历数据结构的二叉树的遍历数据结构的二叉树的遍历数据结构的二叉树的遍历
数据结构 二叉树的遍历 课程设计 C/C ++ 语言
本程序是数据结构课程设计作业,实现对二叉树的创建,遍历 找到相应结果,删除等操作。
数据结构实验,二叉树的建立与遍历,C语言
数据结构二叉树的遍历,采用C语言实现二叉树的非递归先序、中序、后序遍历算法
二叉树遍历,c语言 实现数据结构二叉树遍历
一个用c语言实现的二叉树的 先序遍历,中序遍历、后序遍历的算法。
数据结构实用教程之二叉树,其中包含了:二叉树的定义、二叉树的递归遍历、二叉树基本操作。 数据结构实用教程之二叉树,其中包含了:二叉树的定义、二叉树的递归遍历、二叉树基本操作。 数据结构实用教程之二叉树,...
运用C语言编写的二叉树遍历程序 先序遍历·中序遍历·后序遍历
数据结构 二叉树的遍历 自己写的代码,可以完整运行,适合数据结构课后实验
课程设计报告数据结构二叉树遍历演示
数据结构第七章二叉树遍历的源代码,有用有用~~按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树...