Skip to content

Instantly share code, notes, and snippets.

@nanjingdaqi
Created November 4, 2018 09:15
Show Gist options
  • Save nanjingdaqi/785e08dc20aaf66d35b072ccfc898c84 to your computer and use it in GitHub Desktop.
Save nanjingdaqi/785e08dc20aaf66d35b072ccfc898c84 to your computer and use it in GitHub Desktop.
public class Node {
int val;
Node left;
Node right;
}
public void inOrderScan(Node root) {
if (root == null) return;
Node cur = root;
while (cur != null) {
if (cur.left != null) {
Node cur2 = cur.left;
while (cur2.right != null && cur2.right != cur) {
cur2 = cur2.right;
}
if (cur2.right == null) {
cur2.right = cur;
cur = cur.left;
continue;
} else {
cur2.right = null;
}
}
print(cur);
cur = cur.right;
}
}
public void preOrderScan(Node root) {
if (root == null) return;
Node cur = root;
while (cur != null) {
Node cur2 = cur.left;
if (cur2 != null) {
while (cur2.right != null && cur2.right != cur) {
cur2 = cur2.right;
}
if (cur2.right == null) {
cur2.right = cur;
print(cur);
cur = cur.left;
continue;
} else {
cur2.right = null;
cur = cur.right;
continue;
}
} else {
print(cur);
cur = cur.right;
}
}
public void postOrderScan(Node root) {
if (root == null) return;
Node cur = root;
while (cur != null) {
Node cur2 = cur.left;
if (cur2 != null) {
while (cur2.right != null && cur2.right != cur) {
cur2 = cur2.right;
}
if (cur2.right == null) {
cur2.right = cur;
cur = cur.left;
continue;
} else {
printReverseEdge(cur.left);
cur2.right = null;
cur = cur.right;
}
} else {
cur = cur.right;
}
}
printReverseEdge(root);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment