//后序遍歷,左孩子-右孩子-根結(jié)點
var TreeNode = {
val: 1,
left: {
val: 2,
left: {
val: 4,
},
right: {
val: 5
}
},
right: {
val: 3,
left: {
val: 6,
},
right: {
val: 7
}
}
};
var postOrderRecur = function(root){
var list = [];
var postOrder = function(root){
if(root === undefined){
return root;
}
postOrder(root.left);
postOrder(root.right);
list.push(root.val);
}
postOrder(root);
return list;
}
// 使用兩個棧結(jié)構(gòu)
var postOrderUnRecur = function(root){
var list = [];
if(root !== undefined){
var s1 = [];
var s2 = [];
s1.push(root);
while(s1.length !== 0){
head = s1.pop();
s2.push(head);
if(head.left !== undefined){
s1.push(head.left);
}
if(head.right !== undefined){
s1.push(head.right);
}
}
while(s2.length !== 0){
var item = s2.pop();
list.push(item.val);
}
}
return list;
}
// var listRecur = postOrderRecur(TreeNode);
// console.log('遞歸后序遍歷', listRecur);
var listUnRecur = postOrderUnRecur(TreeNode);
console.log('非遞歸后序遍歷', listUnRecur);
// [4, 5, 2, 6, 7, 3, 1]
二叉樹后序遍歷JavaScript遞歸和非遞歸實現(xiàn)方法
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 注:本文來自 左程云的書《程序員代碼面試指南》 題目:分別用遞歸和非遞歸方法,實現(xiàn)二叉樹的先序遍歷(根左右)、中序...
- 遞歸 比較簡單,直接看代碼即可. 非遞歸 先序遍歷 申請一個棧,記為s1,將頭結(jié)點壓棧. 每次從棧頂彈出節(jié)點nod...
- 一. 前序遍歷 DLRleetcode地址使用棧,先壓入根節(jié)點,每次棧頂彈出一個節(jié)點后先壓入這個節(jié)點的右孩子,再...