編寫非遞迴遍歷演算法,統計二叉樹的深度。各位請幫幫忙吧,急

時間 2021-08-30 10:21:30

1樓:

#include

#include

#define maxsize 100

typedef char datatype;

typedef struct node /*二叉樹結點型別*/

bitree;

bitree *q[maxsize]; /*用於建立二叉樹*/

bitree *creatree(); /*函式宣告*/

int depth(bitree *);

void print(bitree *);

void print1(bitree *);

void print3(bitree *);

int main() /*主函式*/

while((ch!='c') && (ch!='c'));

system("cls");

} return 1;

}bitree *creatree()/*建立二叉樹*/

s->data = ch;

s->lchild = null;

s->rchild = null;

}rear++;

q[rear] = s; /*q[rear]指向新分配的節點,q[front]指向上一個的節點*/

if(rear == 1)

root = s; /*s為根*/

else

ch = getchar();

}return root;

}void print(bitree *t) /*先序形式輸出二叉樹*/

else

return;

}print2(bitree *t)/*中序遞迴遍歷二叉樹*/

else

return;

}void print3(bitree *t) /*後序形式輸出二叉樹*/

else

return;

} int depth(bitree *t) /*求二叉樹深度的演算法*/}

2樓:

與非遞迴遍歷二叉樹類似,多維護一個計數,入棧+1,出棧-1,到葉子節點,比較記錄最大長度。用手機回的,沒法寫**,希望對你有幫助。

二叉樹遍歷,二叉樹遍歷問題?

這個說起來 很煩 不過可以 用遞迴的思想做。因為根為1左4 2 右5 7 3 6 遞迴的思想。再在左子樹的前序中 2 為根 當然 4 就是葉子 再看中序 在右邊。右3 為根 所以子樹的左子樹 還有5 7 右 為6在遞迴。不打了 根結點為1,則左為42,右5736,再看先根序列24 3576 左邊42...

關於遞迴演算法求二叉樹深度演算法,關於求二叉樹深度的遞迴演算法

int height bitree t if 中的n應該是v。其思想是,一個節點的深度是他的兩個子節點中深度的最大值再加上1。這個演算法中u得到其左子數的深度,v獲得右子樹的深度。則這個節點的深度就是u和v中最大的再加上1。要想獲得樹的深度,就先獲得這個樹中根節點的兩個兒子的深度,比較兩個兒子的深度...

二叉樹遍歷,二叉樹的遍歷到底是怎麼遍歷的啊?

中序 先遍歷左子樹 就是245組成的那棵樹 遍歷245時也是中序 就是 425 然後走根節點 1 然後遍歷右子樹 637 連起來就是4251637 這種問題。多看幾遍書就好了吧 中序是左中右順序遍歷。把每個點都看成頭結點然後左走,遇節點就遍歷左子樹,等左邊空了,就訪問當前節點的父節點,也就是中,寫下...