利用遞迴很容易就能夠構造二叉樹,但是利用非遞迴方法就不那麼容易。非遞迴方式構建二叉樹需要用到棧的結構,在這裡梳理一下思路。
#include #include #include using namespace std;
class binode
; binode(char c) :val(c) {};
char val;
binode* left = null;
binode* right = null;
};binode* addtree(string str)
id++;
} else
else
id++;
}else
}} return root;
}void printtree(binode* root)
if (root->right != null)
}}
二叉樹 遞迴 非遞迴
include include include include using namespace std typedef struct node bintree typedef struct node1 btnode void creatbintree char s,bintree root 建立二叉...
非遞迴二叉樹
由於棧和遞迴原理相同,且遞迴建立二叉樹的效率較低,所以我們可以借助棧來實現二叉樹的非遞迴建立以及遍歷。include include using namespace std template struct binarytreenode template class binarytree binary...
二叉樹的構造,遞迴遍歷,非遞迴遍歷
二叉樹的非遞迴遍歷在面試的時候也會問到,好像後續的非遞迴遍歷比較麻煩,我沒有進一步了解,只實現了前序和中序的非遞迴遍歷。前序 根節點,左孩子,右孩子 中序 左孩子,根節點,右孩子 後序 左孩子,右孩子,根節點 include include include using namespace std s...