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() };