面試準備 資料結構 樹

2021-06-23 02:00:05 字數 2425 閱讀 9695

左孩子,右兄弟,二叉樹儲存-0-

#include using namespace std;

#include #include templateclass treenode

treenode* getfirstchild()

void setfirstchild(treenode* l)

treenode* getnextbrother()

void setnextbrother(treenode* r)

t& getdata()

void setdata(t value)

};templateclass tree

treenode* getroot()

void setroot(treenode* item)

void create(t stop_flag);

treenode* createtree(t stop_flag);

treenode* findtarget(treenode* t, t target); //在t為根節點的樹中搜尋值為target的節點

treenode* findfather(treenode* t, treenode* p); //在t為根節點的樹中搜尋p的父節點

treenode* firstchild(treenode* p); //返回p節點的左孩子節點

treenode* nextbrother(treenode* p); //返回p節點的下乙個兄弟節點

void delsubtree(treenode* t, treenode* p); //在t為根節點的樹中刪除p為根節點的子樹

void del(treenode* p); //

void preorder(treenode* t); //先根、深搜

void levelorder(treenode* t); //層次、廣搜

void preorder_n(treenode* t);

};templatetreenode* tree::findfather(treenode* t, treenode* p)

treenode* result = null;

treenode* q = t->getfirstchild();

while (q != null & q != p) else

} if (q == p) else

return null;

}templatetreenode* tree::findtarget(treenode* t, t target)

treenode* result = null;

if (t->getdata() == target) else

return result; }}

templatetreenode* tree::firstchild(treenode* p)

if (p->getfirstchild())

return null;

}templatetreenode* tree::nextbrother(treenode* p)

if (p->getnextbrother())

return null;

}templatevoid tree::delsubtree(treenode* t, treenode* p) else else

q->setnextbrother(p->getnextbrother());

del(p);

return;

}} else else

} }}templatevoid tree::del(treenode*p)

delete p;

} return;

}templatevoid tree::preorder(treenode* t)

} return;

}templatevoid tree::levelorder(treenode* t)

} }return;

}templatevoid tree::preorder_n(treenode* t)

while (p == null && !s.empty())

} while (!s.empty());

} return;

}templatetreenode* tree::createtree(t stop_flag) else

t1 = createtree(stop_flag);

t->setfirstchild(t1);

t2 = createtree(stop_flag);

t->setnextbrother(t2);

return t; }}

templatevoid tree::create(t stop_flag)

int main()

面試準備 資料結構 鍊錶

include using namespace std 鍊錶節點定義 template struct slnode slnode const t item,slnode nextnode null 鍊錶類定義 templateclass sllist sllist bool isempty int ...

考研複試面試準備 資料結構篇

一些資料物件以及附加在這些資料物件上的集合的操作 尾插法建立單鏈表,n個元素儲存在陣列a中 void createlistr lnode c,int a,int n r next null 頭插法 void createlistf lnode c,int a,int n 棧 只能在一端進行插入或刪除...

面試 資料結構 trie樹

一 定義及使用場景 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊樹高 特點 1 根節點不包含...