資料結構學到二叉樹了。覺得有點難了。
大家都知道,先序+中序或者中序+後序才能確定一棵二叉樹。
這次用的是先序和中序構建二叉樹,再用層序遍歷輸出。
先序:7 10 4 3 1 2 8 11
中序:4 10 3 1 7 11 8 2
那麼層序就是
7 10 2 4 3 8 1 11
struct binarytree;
由於stl中沒有樹。所以只能手寫啦、
我們知道二叉樹的構建是通過遞迴實現的。
binarytree *buildtree(int *pre,int *in,int n)
//下面的這個遞迴確定可以自己下去手寫模擬。
node->left=buildtree(pre+1,in,i0);
node->right=buildtree(pre+i0+1,in+i0+1,n-i0-1);
return node;//
}
這樣一趟下來我們就能在記憶體中,存下這個二叉樹啦。
現在就是要層序遍歷輸出它。
用乙個容器來存放資料。層序遍歷主要是用佇列實現。
void levelorder(binarytree *root)
if(temp->right!=0)} }
我們上述給的例子的確認過程應該這樣
後面左右子樹也依次類推、
左子樹又以10為結點繼續往下分析,右子樹以2為結點往下分析。
所以層序輸出時7 10 2 4 3 8 1 11
這裡定義的vector是全域性變數。
先序構建二叉樹及先序遍歷二叉樹
先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...
先序構建二叉樹及先序遍歷二叉樹
先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...
先序構建二叉樹 preorder
先序構建二叉樹 preorder 題目描述 樹的括號表示法 先將根結點放入一對圓括號中,然後把它的子樹按由左而右的順序放入括號中,而對子樹也採用同樣方法處理 同層子樹與它的根結點用一對圓括號括起來。例如下圖可寫成如下形式 輸入描述 輸入只有乙個字串,用括號表示法表示的一顆二叉樹。輸出描述 輸出以後一...