首页 > 代码库 > 二叉树建立和遍历
二叉树建立和遍历
二叉树创建遍历规则:
1.先序:根-左-右
2.中序:左-根-右
3.后序:左-右-根
二叉树定义和辅助函数如下:
struct node { int data; struct node* left; struct node* right; }; void visit(int data) { printf("%d ", data); } int indata() { int data; scanf("%d",&data); return data; }
先序创建二叉树:
struct node* CreateBiTree()//先序建立一个二叉树 { char x; //x为根节点 struct node* t; x=indata(); if (x==' ') /* 判断当前子树是否创建完成*/ return NULL; else { t=(struct node*)malloc(sizeof(struct node)); t->data=http://www.mamicode.com/x; >先序遍历二叉树:void preOrder(struct node* root) { if (root == NULL) return; visit(root->data); preOrder(root->left); preOrder(root->right); }
中序创建二叉树:
struct node* CreateBiTree()//先序建立一个二叉树 { char x; //x为根节点 struct node* t; x=indata(); if (x==' ') /* 判断当前子树是否创建完成*/ return NULL; else { t=(struct node*)malloc(sizeof(struct node)); t->left=CreateBiTree(); t->data=http://www.mamicode.com/x; >中序遍历二叉树:void inOrder(struct node* root) { if (root == NULL) return; inOrder(root->left); visit(root->data); inOrder(root->right); }
后序创建二叉树struct node* CreateBiTree()//先序建立一个二叉树 { char x; //x为根节点 struct node* t; x=indata(); if (x==' ') /* 判断当前子树是否创建完成*/ return NULL; else { t=(struct node*)malloc(sizeof(struct node)); t->left=CreateBiTree(); t->right=CreateBiTree(); t->data=http://www.mamicode.com/x; >后序遍历二叉树void inOrder(struct node* root) { if (root == NULL) return; inOrder(root->left); inOrder(root->right); visit(root->data); }
转载请注明作者:小刘
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。