今天做一道二叉树 中序遍历的算法题目。(题目来源,LeetCode94
ps:每日算法-LeetCode1038-反向遍历
题目
二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。
思路
- 二叉树中序遍历: 左中右
- 递归算法:递归二叉树,先递归左节点,中间节点 push 进 result,在递归右节点
- 迭代法
题目解答
递归算法
隐性的维护一个栈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
var inorderTraversal = function (root) { let result = []; travse(root); return result;
function travse(node) { if (!node) { return; }
travse(node.left); result.push(node.val); travse(node.right); } };
|
迭代算法
显性的维护一个栈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var inorderTraversal = function (root) { let static = []; let result = []; while (root || static.length) { while (root) { static.push(root); root = root.left; } let node = static.pop(); result.push(node.val); if (node.right) { root = node.right; } } return result; };
|
栈解法动图了解下~
