#include #include #define m 50
typedef struct nodebtnode,*btree;
void preorder(btree t)//前序非遞迴
p=stack[top--];
p=p->rlink;
}while(!(p==null&&top==-1));
}void inorder(btree t)//中序非遞迴
p=stack[top--];
visit(p);
p=p->rlink;
}while(!(p==null&&top==-1));
}void postorder(btree t)//後序非遞迴
p=stack1[top];
flag=stack2[top--];
if(flag==0)
else
}while(!(p==null&&top==-1));
}int depthbt(btree t)//中序求深度
p=stack1[top];
curdepth = stack2[top--];
if(p->llink ==null&&p->rlink==null)
if(curdepth>maxdepth)
maxdepth=curdepth;
p=p->rlink;
curdepth++;
}while(!(p==null&&top==-1));
} return (maxdepth);
}int layer(btree t,int a)//層次後續非遞迴
p=stack1[top];
flag=stack2[top--];
if(flag==0)
else
}while(!(p==null&&top==-1));
}btree deletebt(btree t,int a)//刪除前序非遞迴
else
else
stack[++top]=p;
q=p;
p=p->llink;
}p=stack[top--];
q=p;
p=p->rlink;
}while(!(p==null&&top==-1)); }}
int sum_n1(btree t)//度為1的前序非遞迴
p=stack[top--];
p=p->rlink;
}while(!(p==null&&top==-1));
return n;
}void ancestor(btree t,int a)//元素祖先後續非遞迴
p=stack1[top];
flag=stack2[top--];
if(flag==0)
else
else
p=null;
}}while(!(p==null&&top==-1));
}
二叉樹前中後序遍歷非遞迴實現C
前幾天面試過程中面試官讓手寫一下二叉樹後序遍歷的非遞迴寫法,當時沒有寫出來,本想著可能是因為面試太緊張的原因,才這麼簡單的題都沒寫出來,後來特地去研究了一下,發現二叉樹的後序遍歷非遞迴實現還真的沒我想的那麼簡單,在此寫個部落格記錄一下,順便把前序和中序的非遞迴實現也寫出來。其實不管是前序 中序還是後...
二叉樹前中後序遍歷
前序遍歷a b d f g h i e c 中序遍歷f d h g i b e a c 後序遍歷f h i g d e b c a 前序 根左右 中序 左根右 後序 左右根 已知某二叉樹的前序遍歷為a b d f g h i e c,中序遍歷為f d h g i b e a c,請還原這顆二叉樹。思...
二叉樹前中後序遍歷
二叉樹 6.先序遍歷 10分 請編寫遞迴函式,實現二叉樹的先序遍歷。函式原型 先序遍歷 void bintreepreorder const tnode root 說明 root為二叉樹或子樹的根指標。在標頭檔案 bintree.h 新增函式宣告。bintree.h 先序遍歷 void bintre...