左孩子,右兄弟,二叉樹儲存-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 根節點不包含...