二叉树的创建,和三种递归遍历方式

在运行窗口输入:

A B D # # F E # # # C G # H # # I # #

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 typedef char ElementType;
 5 typedef struct TNode *Position;
 6 typedef Position BinTree;    //二叉树类型
 7 struct TNode {
 8     ElementType Data;    //结点数据
 9     BinTree Left;        //指向左子树
10     BinTree Right;        //指向右子树
11 };
12
13 void printBinTree(BinTree BT, int Depth);
14
15
16 BinTree CreateBinaryTree(BinTree BT)
17 {
18     char dt;
19     //printf("please enter a character: ");
20     scanf_s("%c", &dt);
21     getchar();
22     if (dt == ‘#‘)
23         return NULL;
24     else
25     {
26         if (!BT)
27         BT = (BinTree)malloc(sizeof(struct TNode));
28         BT->Data = dt;
29         BT->Left = NULL;
30         BT->Right = NULL;
31         //printf("please enter the left son of %c: ", dt);
32         BT->Left = CreateBinaryTree(BT->Left);
33         //printf("please enter the right son of %c: ", dt);
34         BT->Right = CreateBinaryTree(BT->Right);
35         return BT;
36     }
37
38 }
39
40
41
42 void InorderTraversal(BinTree BT, int Depth)
43 {
44     if (BT)
45     {
46         printBinTree(BT, Depth);
47         InorderTraversal(BT->Left, Depth + 1);
48         InorderTraversal(BT->Right, Depth + 1);
49
50         //printf("%c", BT->Data);
51
52     }
53 }
54
55 void printBinTree(BinTree BT, int Depth)
56 {
57     for (int i = 0; i < Depth; i++)
58         printf("  ");
59     printf("%c\n", BT->Data);
60 }
61
62 int main()
63 {
64     BinTree BT = (BinTree)malloc(sizeof(struct TNode));
65     BT = CreateBinaryTree(BT);
66     InorderTraversal(BT, 0);
67 }

原文地址:https://www.cnblogs.com/hi3254014978/p/9746051.html

时间: 2024-11-05 14:41:14

二叉树的创建,和三种递归遍历方式的相关文章

二叉树的创建与三种递归遍历

#include<iostream>struct tree{ struct tree *left; struct tree *right; int data;};tree *T;typedef struct tree *Tree,*TNode,TREE;using namespace std;void PreCreateTree(Tree& T);void PreOrder(Tree& T);void InOrder(Tree& T);void PostOrder(Tr

C++实现二叉树的建立和三种递归遍历

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 二叉树是一种常见的数据结构,二叉树的遍历也是家常便饭的事了,这里仅仅写出一个完整的可以运行的C++代码来随便建立一个如下图所示的二叉树,建一棵二叉树是实现二叉树各种操作的基础,下面的程序也很简单,这只是二叉树练习的开始,以后的博文中,将会紧紧围绕这棵二叉树练习更多的操作:如求二叉树的大小,二叉树的深度,翻转二叉树...,这里只是基础中的基础,只是为以后的学习做铺垫. 下面给出C++代码,代码的功能包括: 1.建立如上图所示的简单的二叉树. 2.

Java学习(十八):二叉树的三种递归遍历

二叉树的三种递归遍历: 1 public class StudentNode 2 { 3 private String name; 4 5 private StudentNode leftNode; 6 7 private StudentNode rightNode; 8 9 public String getName() 10 { 11 return name; 12 } 13 14 public void setName(String name) 15 { 16 this.name = na

二叉树的三种递归遍历实现

声明:学过二叉树的童鞋可以跳过前面的故事,直接看最后的代码实现.  你见过二叉树吗?一种很神奇的树,传说见到他的人都是幸运的.如果你没见过,好运立马降临: 怎么样?有被惊艳到吗?好运已经送到,祝你今晚睡得香甜. 好了,送完祝福,下面讲一个神奇的故事: 讲故事前,简单说说二叉树. 那么我要说的二叉树是什么呢?它是一种数据结构,数据结构是什么可以自行百度一下,这里不讨论他.举一个现实中的例子:把某个家庭看作一棵树,这家的爸爸(妈妈)有两个孩子,那么爸爸(妈妈)就是树的根,俩孩子就是这棵树的叶子,而此

二叉树基本操作--创建,三种遍历,叶子节点

虽然二叉树的操作很常见,但是认真写写熟悉很重要,特别是typedef, CreateBiTree(BiTNode** T)指针的操作等等,还有就是创建方法,去实际输入值就知道其中的妙处,为-1时为空节点. #include <iostream> using namespace std; //节点的定义 typedef struct BTNode { int data; BTNode* rChild; BTNode* lChild; }BiTNode, *BiTree; //二叉树的创建,先序创

三种递归遍历二叉树

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef int ElementType; 5 6 struct BinarySearchTreeNode 7 { 8 ElementType Element; 9 struct BinarySearchTreeNode *Left; 10 struct BinarySearchTreeNode *Right; 11 }; 12 13 int BinarySearchTreePreO

二叉树的创建和四种遍历(前序、先序、后序、层次、结点的层数、深度、叶子数等)—java描述

二叉树的创建和四种遍历(前序.先序.后序.层次.结点的层数.深度.叶子数等)—java描述 package javab; //树的结点类 public class TreeNode { String data; TreeNode leftChild,rightChild,next; public TreeNode(String data){ this.data=data; } public TreeNode(String data,TreeNode left,TreeNode right){ l

通过两种深度优先遍历方式重建二叉树或者得到其余一种遍历方式

重建二叉树的方法有很多种,但是并不是通过任意两种深度优先遍历方式都可以重建二叉树,它也是有限制的. 通过前序+中序.后序+中序.层序+中序这三种方式是可以重建二叉树的,但是通过前序+后序.前序+层序.后序+层序这三种方式是不能重建二叉树的.本文重点讲解通过前序+中序的方式重建二叉树的基本思想以及具体的代码实现. 基本思想 中序遍历的第一个节点是root节点,在前序遍历中找到root, root的前半段就是root的左子树的前序遍历(长度M), root的后半段就是root的右子树的前序遍历(长度

三种形式遍历集合

对于遍历集合获取其对象,在这里总结的三种简单的方式 方式一 : 将集合变为数组,后遍历数组 Object[] obj = list.toArray(); for(Object s : obj){ System.out.println((String) s); } 方式二 :  get()方法获取 . 但只能在list集合中使用, 只有List集合才有索引值. for(int i = 0;i<list.size();i++){ System.out.println(list.get(i)); }