解法:递归
思路:二叉树的遍历方式有深度优先和广度优先两种,本次探讨的是二叉树的深度优先,其中深度优先中有前、中、后序遍历法他们其实是有规律的
前序遍历:中左右。 先遍历二叉树的中间节点(每一层的根节点),添加到栈中,然后遍历根节点的左节点,(加入栈中)如果左节点还有子节点,则递归,否则再遍历跟的右节点,形成一套递归的流程
var preorderTraversal = function(root) {
let stack = []
function deepRoot (root) {
if (!root) return
stack.push(root.val)
deepRoot(root.left)
deepRoot(root.right)
}
deepRoot(root)
return stack
};
中序遍历:左中右。遍历方式同上
var inorderTraversal = function(root) {
let stack = []
function deepRoot (root) {
if (!root) return
deepRoot(root.left)
stack.push(root.val)
deepRoot(root.right)
}
deepRoot(root)
return stack
};
后序遍历:左右中,遍历方式同上
var postorderTraversal = function(root) {
let stack = []
function deepRoot (root) {
if (!root) return
deepRoot(root.left)
deepRoot(root.right)
stack.push(root.val)
}
deepRoot(root)
return stack
};