91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

非遞歸實現遍歷二叉樹

發布時間:2020-07-23 05:22:17 來源:網絡 閱讀:326 作者:走走停停吧 欄目:編程語言

非遞歸實現二叉樹主要利用queue和stack的特點,對于層次遍歷二叉樹主要運用queue隊頭出,隊尾插入,先進先出的特點,先將根插入隊尾,然后輸出隊頭的元素,同時將隊頭的左子樹和右子樹元素插入隊尾,依次輸出輸出隊頭的元素,同時將隊頭的左子樹和右子樹元素插入隊尾,直到隊列為空。

void levelorder()

{

queue<BinaryTreeNode<T> *>s;

if (_root == NULL)

return;

s.push(_root);

while (!s.empty())

{

                  BinaryTreeNode<T> *front=s.front();

cout << front->_data << " ";

if (front->_left)

s.push(front->_left);

if (front->_right)

s.push(front->_right);

s.pop();

}

}

非遞歸實現二叉樹前序遍歷主要運用stack的先進后出的特點,先把根壓入棧里,同時先把左子樹的左子樹元素以此壓入棧底,最后左子樹的最后一個元素壓入棧底之后,再將棧底元素彈出棧,再判斷棧底最后一個元素的右子樹,利用以上的方法。代碼如下:

void prevorder()

{

stack<BinaryTreeNode<T> *>s;

if (_root == NULL)

return;

s.push(_root);

while (!s.empty())

{

BinaryTreeNode<T> *cur = s.top();

cout << cur->_data << " ";

s.pop();

if (cur->_right)

s.push(cur->_right);

if (cur->_left)

s.push(cur->_left);

}

}

非遞歸實現二叉樹中序遍歷主要運用stack的先進后出的特點,先把根壓入棧里,同時先把左子樹的左子樹元素以此壓入棧底,最后左子樹的最后一個元素壓入棧底之后,判斷棧底最后一個元素的右子樹,利用以上的方法。代碼如下:

void inorder()

{

stack<BinaryTreeNode<T> *>s;

if (_root == NULL)

return;

BinaryTreeNode<T> *cur = _root;

while (cur||!s.empty())

{

while (cur)

{

s.push(cur);

cur = cur->_left;

}

cout << s.top()->_data << " ";

cur = s.top()->_right;

s.pop();

}

}

非遞歸實現二叉樹后序遍歷主要運用stack的先進后出的特點,在利用前序和后序的共同特點

void postorder()

{

stack<BinaryTreeNode<T> *>s;

if (_root == NULL)

return;

BinaryTreeNode<T> *cur = _root;

BinaryTreeNode<T> *prev = NULL;

s.push(cur);

while (cur || !s.empty())

{

while (cur->_left&&cur->_left!=prev)

{

s.push(cur->_left);

cur = cur->_left;

}

if (s.top()->_right&&s.top()->_right != prev)

{

cur = s.top()->_right;

s.push(cur);

}

else

{

cout << s.top()->_data << " ";

prev = s.top();

s.pop();

cur = s.top();

cur->_left =NULL;

}

}

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍州市| 阿城市| 密云县| 大兴区| 西乡县| 广灵县| 盐池县| 增城市| 台北市| 漳平市| 武隆县| 资讯| 乡城县| 余姚市| 西乌| 迁安市| 张家港市| 古丈县| 寿光市| 望都县| 北京市| 南投县| 丰原市| 丹棱县| 竹溪县| 新绛县| 阿克陶县| 中江县| 章丘市| 南皮县| 嘉鱼县| 北安市| 道真| 万安县| 微博| 凌云县| 高淳县| 麟游县| 辽阳市| 宜城市| 湘潭市|