bintreenode.h二叉樹節點標頭檔案
#includeusing namespace std;
class bintree;
class bintreenode
bintreenode(int num):key(num),left(null),right(null){}
bintreenode(int num,bintreenode* l,bintreenode *r):key(num),left(l),right(r)
{} int getkey()
bintreenode* getleft()
bintreenode* getright()
};
bintree.h二叉樹檔案
#include"bintreenode.h"
#includeclass bintree
~bintree()
void makeempty(bintreenode *node)
if(p->left!=null)
if(p->right!=null)
}bool insert(int num)
while(1)
}else
}} }
bintreenode*find(int num)
else if(p->key>num)
else
}return null;
} bintreenode* getparent(bintreenode*node)
else if(p->key>node->key)
else
}return q;
} void inorder(bintreenode* node) }
void preorder(bintreenode* node) }
void postorder(bintreenode* node) }
//非遞迴中序遍歷
void nonreinorder(bintreenode* node)
p=s.top();
couts.pop();
flag=1;
}else
}else
}//沿著樹向上遍歷左孩子
if(flag==1)
flag=1;
p=s.top();
couts.pop();
}s.push(p->right);
flag=0;
}} cout<<"this is the end!"return null;
} bintreenode*getright(bintreenode*node)
return null;
} int height(bintreenode*node)
int lheight=height(node->left);
int rheight=height(node->right);
return 1+(lheight>rheight?lheight:rheight);
}};
main.cpp
#include"bintree.h"
int main()
; bintree tree;
for(i=0;i<10;i++)
tree.inorder(tree.getroot());
cout stacknode.h includeusing namespace std class stack class stacknode int getkey stacknode getnext stack.h include include stacknode.h using namespace st... 集合 如同在數學中一樣,集合也是電腦科學的基礎。不過數學上的集合時不變的,而演算法所操作的集合是動態改變的。資料結構這一部分介紹在計算機中表示和操作有窮動態集合的一些基本技術。字典 許多演算法要求能夠將元素插入集合,從集合中刪除元素,以及測試元素是否屬於集合。支援這些操作的動態集合就叫字典。另一些演... 看的概念挺朦朧的,沒有明確好雙鏈表到底需要哪些方法,其實針對這種結構應該可以寫很多方法,並沒有什麼特定標準。不過真是只看不練不行啊,一下手各種錯誤,各種溢位 include using namespace std templatestruct node templateclass flist tem...演算法導論第十章例題 棧的實現
演算法導論第十章 基本資料結構
演算法導論第十章資料結構 雙向鍊錶