leetcode非遞歸遍歷二叉樹
- 2020 年 1 月 14 日
- 筆記
非遞歸遍歷二叉樹
中序遍歷 leecode94
左根右
var inorderTraversal = function(root) { // 中序遍歷 const number= [] const arr = [] while(true){ while(root){ arr.push(root) root = root.left } if (!arr.length) { break } let temp = arr.pop() number.push(temp.val) root = temp.right } return number }; 前序和後序基本差不多,後序也是當作前序來做的。注意入棧順序
前序遍歷 leetcode 144
根左右
var preorderTraversal = function(root) { let arr =[] let number=[] if (!root){ return [] } arr.push(root) while(arr.length){ let temp = arr.pop() number.push(temp.val) if (temp.right){ arr.push(temp.right) } if (temp.left){ arr.push(temp.left) } } return number };
後序遍歷 leetcode145
左右根
var postorderTraversal = function(root) { let arr =[] let number=[] if (!root){ return [] } arr.push(root) while(arr.length){ let temp = arr.pop() number.push(temp.val) if (temp.left){ arr.push(temp.left) } if (temp.right){ arr.push(temp.right) } } return number.reverse() };