您的位置:首页 > 其它

C指针与二叉树学习随笔

2014-09-11 16:29 232 查看

// a20140903BinaryTreeNode.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include<stdlib.h>
typedef char ElemType;

typedef struct BiTNode
{
char data;
struct BiTNode *lchild, *rchild;
}BiTNode ,*BiTree;

//约定用户用前序遍历
void CreateBiTree(BiTree *T)
{
char c;

scanf("%c",&c);
if(' '==c)
{
*T = NULL;
}
else
{
*T = (BiTNode*)malloc(sizeof(BiTNode));
(*T)->data = c;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}

//访问二叉树结点的具体操作,你想干嘛?
void visit(char c,int level)
{
printf("%c 位于第%d层\n",c,level);
}

//遍历二叉树
void PreOrderTraverse(BiTree T ,int level)
{
if(T)
{
visit(T->data,level);
PreOrderTraverse(T->lchild,level+1);
PreOrderTraverse(T->rchild,level+1);
}
}
int _tmain(int argc, _TCHAR* argv[])
{

int level = 1;
BiTree T = NULL;      //T 是指向树结构的指针,被置为NULL

CreateBiTree(&T);
PreOrderTraverse(T,level);

return 0;
}

/*  输入 "AB D  CE   "

每次进行处理前先建立一个指向NULL的BiTNode类型指针,并作为参数传给函数调用

调用过程:1.申请动态分配空间malloc(sizeof(BiTNode))

                   2.指针指向它,将指针想象成罗盘针,可以随意转动,malloc返回的地址是其指向的目标位置

                   3.如果下颗要指向的树为空,没有字符,则把指针赋值NULL,即让指针指向0x000000

                   4.如果下颗树不为空,则利用指针调用malloc分配的空间装配树的相关内容(data),好好理解指针的调用作用。将树的信息存入malloc空间。

                   5. 右树也一样。      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: