按之字形順序列印二叉樹

2021-09-25 19:37:36 字數 863 閱讀 8285

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。

思路:層序遍歷可以使用乙個輔助棧,每層都按從左到右(或者從右到左)的順序遍歷每個節點;

使用兩個輔助棧就可以層序遍歷樹,但每層遍歷的順序不同(一層從左到右,一層從右到左)

/*

struct treenode

};*/

class solution

ret.push_back(tmp1);

}if(!s2.empty())

ret.push_back(tmp2);}}

return ret;

}};

在牛客討論區看到乙個類似的答案:

到底還是c++基礎不過關:if 語句有兩種形式:if 語句   、  if  else 語句

c++規定:else與離它最近的尚未匹配的 if 匹配,從而消除二義性

所以這種形式:

if()

else if()

else if()

else

每個else都是與其前面那個if匹配,當if條件滿足後,其後的所有語句都不會執行!所以下面while迴圈中每次只執行乙個語句,而我上面有兩個if 語句,這兩個語句都會判斷是否需要執行,因此也就需要兩個陣列,分別儲存每層需要列印的數字

class solution

result.push_back(data);

}else if(!stack2.empty())

result.push_back(data);}}

return result;

}

按之字形順序列印二叉樹

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

按之字形順序列印二叉樹

請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。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 完整 如下...