設非空二叉樹T采用二叉鏈表表示 寫出T的儲存結構描述 事編寫出算法實現(xiàn)對二叉樹T的中序遍歷

2022-11-03 18:19

1個回答
/*
二叉樹中序遍歷
*/
#include "stdafx.h"
#include
#include
#define NULL 0
#define MaxSize 20

typedef struct BiTNode{
int data ;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree(int *a,int position)
{
BiTree newnode;
if(a[position]==0||position>15)
return NULL;
else
{
newnode=(BiTNode*)malloc(sizeof(BiTNode));
newnode->data=a[position];
newnode->lchild=CreateBiTree(a,2*position);
newnode->rchild=CreateBiTree(a,2*position+1);
return newnode;
}
}
//void inOrderTraverse(BiTree T) //遞歸算法
//{
// if(T!=NULL)
// {
// inOrderTraverse(T->lchild);
// printf("%d->",T->data);
// inOrderTraverse(T->rchild);
// }
// else
// return;
//}
void inOrderTraverse(BiTree T) //非遞歸算法
{
BiTree p=T;
BiTree Stack[36];
int top=0;
do
{
while(p!=NULL)
{
Stack[++top]=p;
p=p->lchild;
}
if(top>=0)
{
p=Stack[top--];
if(top<0) //這個地方注意
break;
printf("%d->",p->data);
p=p->rchild;
}
}while(top>=0||p!=NULL);
}

void main()
{
BiTree H=NULL;
int i; // 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5
int a[16]={0,6,2,9,1,4,5,0,0,0,3,0,7,8,0,0};
H=CreateBiTree(a,1);
printf("\nThe node content of array_structure is:\n");
for(i=0;i<16;i++)
printf("%2d",a[i]);
printf("\n");
printf("The node content of tree is:\n");
inOrderTraverse(H);
}
相關問答
描述二叉樹的二叉鏈表表示的儲存結構,并給出中序遍歷二叉樹的算法?
1個回答2022-10-01 02:17
struct BinaryNode { int value; BinaryNode * leftChild; BinaryNode * rightChild; }; v...
全文
若二叉樹采用二叉鏈表存儲結構,試編寫中序遍歷二叉樹的遞歸算法
1個回答2022-09-02 17:20
INORDER-TREE-WALK(x) { if (x != NIL )// 非葉子 { INORDER-TREE-WALK(left[x]) // 進入左子 print key[x...
全文
設二叉樹的存儲結構為二叉鏈表,編寫有關二叉樹的遞歸算法:
1個回答2022-08-28 17:30
給了一個程序給你參考,有前中后序遍歷,實現(xiàn)了前5個功能。 提示:8功能可以用任意一種遍歷方法,在程序中,將打印字符的部分換成自己的判斷程序即可。 6功能用后續(xù)遍歷,當遍歷到任意一節(jié)點時,判斷其孩子是不...
全文
用二叉鏈表作為存儲結構,建立二叉樹,對二叉樹進行前序、中序、后序遍歷,在對建立的二叉樹進行中序線索
1個回答2022-09-30 07:34
typedef struct{ int item; *BiTree left; *BiTree right; }BiTree; 以上是二叉樹的定義。 前序: a_view(BiTre...
全文
試以二叉鏈表作存儲結構,編寫按層次順序遍歷二叉樹的算法!
2個回答2022-09-05 07:36
#include "stdio.h" #include "string.h" #define NULL 0 typedef struct BiTNode{ char data; struct...
全文
建立任意二叉樹的二叉鏈表存儲,并對其進行先序、中序、后序遍歷。
3個回答2022-08-19 09:52
#include "stdio.h" #include "stdlib.h" #define STACK_INIT_SIZE 10 //棧的初始長度 #define STACKINCREME...
全文
求橙光游戲一吻定情的世勛攻略(T▽T)
1個回答2022-12-03 01:15
主去外邊拍戲回來遇到吳世勛,和女主在家,然后甩掉女主的助理,后醒來,其實是夢見惡魔牌會燃燒熊熊大火,夢見大火,然后女主做噩夢
數據結構 二叉樹 用二叉鏈鏈表存儲結構 寫出刪除二叉樹所有的葉子節(jié)點的算法
1個回答2022-12-15 12:06
bool* deleteLeaf(Node * curNode) { if(curNode==null) return false; if(deleteLeaf(c...
全文
中序遍歷二叉樹的算法
1個回答2022-11-01 23:39
中序遍歷二叉樹的算法 中序遍歷二叉樹的算法二叉樹的節(jié)點。中序遍歷二叉樹中序遞歸遍歷二叉樹的算法?(數據結構)二叉樹的深度為先序遍歷序列為中序二叉樹的深度為先序遍歷序列為中序用遞歸算法先序中序后序遍歷二...
全文
滿二叉樹和完全二叉樹的區(qū)別
1個回答2025-01-09 00:11
滿二叉樹——除了葉結點外每一個結點都有左右子女且葉結點都處在最底層的二叉樹,。(這個似乎很好想像出來) 完全二叉樹——只有最下面的兩層結點度小于2,并且最下面一層的結點都集中在該層最左邊的若干位置的二...
全文
熱門問答