資料結構之 二叉樹的儲存和遍歷總結

2021-08-22 13:17:42 字數 1957 閱讀 2469

關於二叉樹的儲存和遍歷主要有一下幾個知識點: 遍歷的四種方法,建樹的幾種方法;

話不多說直接上**:

因為是節省時間和節省空間我把他們合在了一起,此**僅供參考,使用時要注意**的正確性,也可以抓取想要的那部分的**,如有錯誤還請各位多多包涵

#include #include #include struct node

;char str[60];

int flag, sum;

struct node *creat() //根據先序(帶有空格)建立二叉樹

else

return root;

};void headcreat(struct node *root) //前序遍歷二叉樹

}void midcreat(struct node *root) //中序遍歷二叉樹

}void lastcreat(struct node *root) //後序遍歷二叉樹

}void ccreat(struct node *root) //層序遍歷

head++;

}}void leaf(struct node *root) //計算葉子節點數

}int deep(struct node *root) //計算樹的深度

else return 0;

}int main()

return 0;

}

資料結構之二叉樹的建立方法之二:

1、先序+中序

2、 後序+中序

#include #include #include struct node

;struct node *creat(int n,char a, char b)

root->l = creat(i,a+1,b);

root->r = creat(n-i-1,a+i+1,b+i+1);

return root;

};void lastcreat(struct node *root)

}int main()

關於先序+中序,在一場個人賽中有所體現

accepted **如下:

#include #include #include struct node

;struct node *creat(int n, char a, char b)

root->l = creat(i, a+1,b);

root->r = creat(n-i-1,a+i+1,b+i+1);

return root;

}void lastcreat(struct node *root)

}int main()

return 0;

}

後序+中序演算法: 注意要和先序+中序的演算法對記憶

;struct node *creat(int n, char a, char b) //a是後序,b是中序

root->l = creat(i,a,b); //首先找左子樹長度是i,因為是從後面向前的無法表示所以用a

root->r = creat(n-i-1,a+i,b+i+1); //n-i-1的意思是總長度減去左子樹和根節點等於右子樹的長度

return root;

};void headcreat(struct node *root)

}int main()

}return 0;

}

資料結構之二叉樹的遍歷

先序遍歷 void preorder node root 中序遍歷 void inorder node root 後續遍歷 void postorder node root 層次遍歷 void level node root if p rchild null 如果右子樹不空,則右子樹根節點入隊 下面...

資料結構(二叉樹) 二叉樹的建立 儲存 遍歷

建立二叉樹,並通過呼叫函式,輸出先序遍歷 中序遍歷與後序遍歷的結果 include include define true 1 define false 0 define ok 1 define error 0 datatype 是二叉樹資料元素型別,此程式定義為char型 typedef char...

資料結構之二叉樹

在二叉樹中每個節點最多只能有兩個子節點。即左子節點和有子節點。在二叉樹中最重要的操作應當是遍歷。即按照某一順序訪問二叉樹中的每乙個節點。一般有如下幾種遍歷方法 1 前序遍歷,即先訪問根幾點,然後再訪問左子節點,最後訪問右子節點。2 中序遍歷,即先訪問左子節點,然後再訪問根節點,最後訪問右子節點。3 ...