後序建立二叉樹

2021-10-02 16:34:18 字數 1134 閱讀 5783

試題描述

採用使用者輸入元素並基於後序遍歷的方式建立乙個包含6個節點的二叉鍊錶樹,基於遍歷和交換,確保任何父節點的元素值不小於子節點。要求在遍歷函式中採用函式指標。採用後序的方法輸出二叉樹的節點

樣例輸出

…cfd…bea

樣例輸出

f d b e c a 應該是反了,正確是a c e b d f

這道題的難點是需要從葉子節點進行回溯比較,我還沒有想到比較簡單的做法,歡迎交流。

演算法思路

1.後序建立二叉樹,

2.把二叉樹轉變為最大堆進行調整,

3.後序遍歷輸出。

#include

#include

#include

using

namespace std;

typedef

struct treenode *tree;

typedef

char elementtype;

stack<

char

> sta;

struct treenode

;typedef

struct nodemaxtree;

maxtree createheap()

maxtree maxheap=

createheap()

;tree createtree()

else

return t;

}maxtree insertheap

(maxtree tmp,

char c)

tmp.array[t]

=c;return tmp;

}void

transform

(tree t)

void

reaorder

(int size)

intmain

(int argc,

char

const

*ar**)

tree t =

createtree()

;transform

(t);

reaorder(1

);return0;

}

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...

資料結構 後序建立二叉樹

二叉樹的前,中,後序遍歷 以及通過補 字元補充二叉樹空分支,按照前序順序構造二叉樹,這些都比較簡單,我這就不過多地贅述 直接貼 include stdafx.h includeusing namespace std typedef char datatype typedef struct node ...

建立二叉樹

今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說a b d,e h j,k l,m n c f,g i 然後要求按照其規則建立二叉樹,題目不難但是卻花費了我不少的時間 第一步,我想到的是需要什麼...