二叉樹 按逆時針順序列印樹的外層節點

2021-06-27 22:47:00 字數 1247 閱讀 4602

題目:epi

難點在於兩點:1、判斷乙個節點是不是外層節點;2、正確地執行列印順序。

class tree

tree(const int d,const shared_ptr&l,const shared_ptr&r):data(d),left(l),right(r){}

};void print_right_subtree(const shared_ptr&root,const bool i***terior)

}void print_left_subtree(const shared_ptr&root,const bool i***terior)

//左節點是否為外層節點,由i***terior決定

print_left_subtree(root->left,i***terior);

//右節點是否為外層節點,還要看root是否有左節點,千萬不要遺漏!!!

print_left_subtree(root->right,i***terior && !root->left);//重要

}void print_tree_exterior(const shared_ptr&root)

{ if(root==nullptr)

return;

cout

print_left_subtree(root->left,true);

print_right_subtree(root->right,true);

cout

shared_ptra2(new tree(2));

shared_ptra3(new tree(3));

shared_ptra4(new tree(4));

shared_ptra5(new tree(5));

shared_ptra6(new tree(6));

shared_ptra7(new tree(7));

shared_ptra8(new tree(8));

a1->left=a2;

a1->right=a3;

a2->left=a4;

a2->right=a5;

a3->left=a6;

a3->right=a7;

a5->left=a8;

print_tree_exterior(a1);

按之字形順序列印二叉樹

題目描述 按之字形順序列印二叉樹 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。解析 要分層列印,不能用常規方法,訪問乙個節點後,將該節點的左右子節點壓入佇列。奇數層從左到右列印,偶數層從右向左列印。使...

按之字形順序列印二叉樹

請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。include iostream include stack using namespace std struct treenode void pri...

按之字形順序列印二叉樹

其實我們可以借鑑層次遍歷時候的思路,參見劍指offer 060 把二叉樹列印成多行,我們把層次遍歷的結果儲存在vector vector 中每一層儲存在乙個vector中,那麼我們輸出的時候就可以進行調整,按照之字形輸出即可 for int i 0 i if i 1 return ans 完整 如下...