關於二叉樹的儲存和遍歷主要有一下幾個知識點: 遍歷的四種方法,建樹的幾種方法;
話不多說直接上**:
因為是節省時間和節省空間我把他們合在了一起,此**僅供參考,使用時要注意**的正確性,也可以抓取想要的那部分的**,如有錯誤還請各位多多包涵
#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 ...