题目来自 leetcode-cn 的探索卡片:
https://leetcode-cn.com/explore/learn/card/data-structure-binary-tree/
遍历
com.youthlin.leetcode.tree.TreeVisitor
前序遍历
递归版本的太简单了,只贴前序遍历方式。
前序递归是先访问本结点,然后递归调用左子树,再递归调用右子树。
中序和后序都差不多,只是把访问结点那行移动一下就行。
public <T, N extends BinTreeNode<T, N>> void preOrderTraversalRecursion(BinTreeNode<T, N> root, Consumer<BinTreeNode<T, N>> action) { if (root == null) { return; } action.accept(root); preOrderTraversalRecursion(root.getLeft(), action); preOrderTraversalRecursion(root.getRight(), action); }
这里我传入了一个 Consumer
, 而不是在方法中直接打印结点值,或者加到链表、数组中。