樹的先序遍歷迭代版本(修改版)

2021-06-11 07:01:58 字數 533 閱讀 8459

針對之前寫的那個前序遍歷,修改了一下。思路和按層遍歷是一樣的(看別人的文章獲悉這兩個遍歷思路一樣,寫完**才發現,的確一樣)

因為順序是根---->右孩子---->左孩子,所以,先輸出(或者是其他的處理)根,然後將右孩子和左孩子分別入棧,每次出棧的節點只有乙個,所以出棧之後的節點再將它的右孩子左孩子分別入棧。。。(就是遞迴版本的執行時棧情況)

#include #include using namespace std;

struct bstnode

};stackst;

void insert(bstnode* &p, int elem)

if(elem > p->value)

else if(elem < p->value)

else

cout << "the same!" << endl;

}void preorder(bstnode* root)

if(p->left)

}}int main(void)

C 中的auto ptr 修改版本

stl 檔案中的 std auto ptr 在c 中的故事特別多,在它的演變過程中至少出現了3個版本.http josuttis.com libbook auto ptr.html 這個連線裡面有它完整的故事.vc6中stl帶的auto ptr 帶owner欄位 的版本應該就是文中說的version...

樹的先序遍歷

先序遍歷順序 根 左 右 對於任一結點p 1.訪問結點p,並將結點p入棧 2.判斷結點p的左孩子是否為空,若為空,則取棧頂結點並進行出棧操作,並將棧頂結點的右孩子置為當前的結點p,迴圈至1 若不為空,則將p的左孩子置為當前的結點p 3.直到p為null並且棧為空,則遍歷結束 所以 1 先將根節點入棧...

Oracle的DMP檔案修改版本號

概括的說就是折騰。1 11g的oracle備份 原來不知道 往10g的oracle恢復,恢復的時候提示頭不對,於是漫長的修改版本號開始了。2 由於備份很大很大,開始用ue等開啟試試,漫長的等待後卡死 磁碟空間不足。3 於是開始找檔案分割工具,找到了工具。結果因為太大,好不容易分割完了,合併的時候總是...