二元樹遍歷與常見操作

2021-05-28 05:50:22 字數 1333 閱讀 2233

#include #include #include #include #include using namespace std;

struct btree

char data;

btree *left, *right;

};void preorder(btree* root)else }}

void midorder(btree* root)else }}

void postorder(btree* root)else if(sflag.top()==false)else }}

void levelorder(btree* root)

}void maxdis(btree* root, int& h, int& dis, list& listh, list& listd)

} }else

}void btreemirror(btree* root)

}void btreecopy(const btree* src, btree*& des)

else

}bool btreecomp(const btree* src, btree* des)

}typedef void(*func)(btree* root);

int main()

; int funcsize = sizeof(func)/sizeof(func);

const char* funcname = ;

btree a('a'),b('b'),c('c'),d('d'),e('e'),f('f'),g('g');

a.left = &b, a.right = &c;

b.left = &d, b.right = &e;

e.left = &f, e.right = &g;

btree* root = &a;

for(int i=0;ilhigh, ldistance;

maxdis(root,high, distance, lhigh, ldistance);

printf("max distance:\t%d\npath:\t", distance);

for(list::iterator it=lhigh.begin();it!=lhigh.end();it++)

printf("\n");

printf("height:\t:%d\npath:\t", high);

for(list::iterator it=ldistance.begin();it!=ldistance.end();it++)

printf("\n");

return 0;

}

解題筆記(33) 按層次遍歷二元樹

問題描述 輸入一顆二元樹,從上往下按層列印樹的每個結點,同一層中按照從左往右的順序列印。例如輸入 8 6 10 5 7 9 11 輸出8 6 10 5 7 9 11。定義二元樹 其實是二元搜尋樹,但並不遍歷演算法 的結點為 view plain print?struct bstreenode 思路 ...

二元樹的深度

題目 輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如 輸入二元樹 10 614 412 16 輸出該樹的深度3。二元樹的結點定義如下 struct sbinarytreenode a node of the bin...

二元空間分割樹 BSP (二)

來自於 在渲染3d遊戲的室內場景時,bsp樹是往往是乙個比較複雜但非常有效的方法。它可以用來進行高效的深度檢測。深度檢測通常 用來決定哪個物體離視點更遠,然後再根據從遠到近進行多邊形繪製,這樣出來的結果才是正確的。首先給出乙個圖,我們可以看出在removal b區域,白色的多邊形覆蓋了黃色多邊形,而...