var postorderTraversal = function (root) {
if (!root) return [];//判断root是否为空
const res = [];//用于放结果
let r = null;//用于存放已经访问过的节点
const stack = [];//栈
while (stack.length||root) {
if (root) {
stack.push(root);//先存放左侧节点。
root = root.left;
}
else {//某个节点没有左子节点。
root = stack[stack.length - 1];//从栈中取出最上面的节点(没有左子节点的节点)。
if (root.right && root.right != r) {//判断是否含有右子节点,并且该右子节点没有访问过。
root = root.right//指针指向该右节点
} else {
res.push(root.val);//否则的话,就把该节点出栈,操作。
stack.pop();
r = root;//标记指针,表示该节点被访问过。
root = null;把遍历指针设为空,来回到栈最上层节点。
}
}
}
return res;
};
js二叉树的后序遍历
最新推荐文章于 2023-10-10 11:39:51 发布