JS 对象描述二叉树
const binaryTree = { value: 'A', left: { value: 'B', left: { value: 'D', }, right: { value: 'E' } }, right: { value: 'C', left: { value: 'F', }, right:{ value: 'G', } } }
前序遍历
原理:
根节点、左、右 (前序指根节点在前)
技巧:
在节点左边打点,从根节点出发,绕树外围一周,穿过点的顺序即遍历顺序
算法实现:
function preorder(node) { if (!node) return; console.log(node.value); preorder(node.left); preorder(node.right); }
中序遍历
原理:
左、根节点、右 (中序指根节点在中间)
技巧:
在节点下方打点,从根节点出发,绕树外围一周,穿过点的顺序即遍历顺序
算法实现:
function midorder(node) { if (!node) return; midorder(node.left); console.log(node.value); midorder(node.right); }
后序遍历
原理:
左、右、根节点 (后序指根节点在最后)
技巧:
在节点右方打点,从根节点出发,绕树外围一周,穿过点的顺序即遍历顺序
算法实现:
function postorder(node) { if (!node) return; postorder(node.left); postorder(node.right); console.log(node.value); }