- public static void preOrderNonRec1(TreeNode root, Visitor visitor) {
- if (root == null)
- return;
- Stack<TreeNode> s = new Stack<TreeNode>();
- TreeNode p = root;
- while (p != null || !s.empty()) {
- while (p != null) {
- visitor.visit(p);
- s.push(p);
- p = p.left;
- }
- if (!s.empty()) {
- p = s.pop();
- p = p.right;
- }
- }
- }
- public static void preOrderNonRec2(TreeNode root, Visitor visitor) {
- if (root == null)
- return;
- Stack<TreeNode> s = new Stack<TreeNode>();
- TreeNode p = root;
- while (p != null || !s.empty()) {
- if (p != null) {
- visitor.visit(p);
- if (p.right != null)
- s.push(p.right);
- p = p.left;
- } else {
- p = s.pop();
- }
- }
- }
- public static void preOrderNonRec3(TreeNode root, Visitor visitor) {
- if (root == null)
- return;
- Stack<TreeNode> s = new Stack<TreeNode>();
- TreeNode p = null;
- s.push(root);
- while (!s.empty()) {
- p = s.pop();
- visitor.visit(p);
- if (p.right != null)
- s.push(p.right);
- if (p.left != null)
- s.push(p.left);
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1105201512546.html
来源: http://www.codesnippet.cn/detail/1105201512546.html