普通二叉树的建立
#include<stdio.h>#include<stdlib.h>typedefstructBinaryTreeNode{intdata;structBinaryTreeNode*Left;structBinaryTreeNode*Right;}Node;//创建二叉树,顺序依次为中间节点->左子树->右子树Node*createBinaryTree(){Node*p;intch;printf("输入data");scanf("%d",&ch);if(ch==0)//如果到了叶子节点,接下来的左、右子树分别赋值为0{p=NULL;}else{p=(Node*)malloc(sizeof(Node));p->data=ch;p->Left=createBinaryTree();//递归创建左子树p->Right=createBinaryTree();//递归创建右子树}returnp;}//先序遍历voidpreOrderTraverse(Node*root){if(root){printf("%d",root->data);preOrderTraverse(root->Left);preOrderTraverse(root->Right);}}//中序遍历voidinOrderTraverse(Node*root){if(root){inOrderTraverse(root->Left);printf("%d",root->data);inOrderTraverse(root->Right);}}//后序遍历voidlastOrderTraverse(Node*root){if(root){lastOrderTraverse(root->Left);lastOrderTraverse(root->Right);printf("%d",root->data);}}//二叉树节点总数目intNodenum(Node*root){if(root==NULL){return0;}else{return1+Nodenum(root->Left)+Nodenum(root->Right);}}//二叉树叶子节点数intLeafnum(Node*root){if(!root){return0;}elseif((root->Left==NULL)&&(root->Right==NULL)){return1;}else{return(Leafnum(root->Left)+Leafnum(root->Right));}}intmain(){inti;Node*root=NULL;root=createBinaryTree();printf("二叉树建立成功");printf("\n");preOrderTraverse(root);printf("\n");inOrderTraverse(root);printf("\n");lastOrderTraverse(root);printf("\n");i=Leafnum(root);printf("%d",i);printf("\n");i=Nodenum(root);printf("%d",i);return0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。