public static List inorderTraversal(TreeNode root) {
if (root == null) {
return null;
}
List list = new ArrayList();
Stack s = new Stack();
do {
while (root != null) {
s.push(root);
root = root.left;
}
if (!s.isEmpty()) {
TreeNode node = s.pop();
list.add(node.val);
root = node.right;
}
} while (!s.isEmpty() || root != null);
return list;
}
public static List inOrderTraversal(BTree bTree) {
if (bTree == null) {
return null;
}
List results = new ArrayList();
List stack = new ArrayList();
BTree cur = bTree;
int len = 0;
while(cur != null || (len = stack.size()) > 0) {
if (cur != null) {
stack.add(cur);
cur = cur.left;
} else {
cur = stack.remove(len - 1);
results.add(cur.value);
cur = cur.right;
}
}
return results;
}
后序遍历
思考后序遍历的规则
首先遍历左子树,然后遍历右子树,最后访问根结点。
我们可以通过标记上一次访问的节点,来判断是否访问过该节点的左右子树
public static List postOrderTraversal(BTree bTree) {
if (bTree == null) {
return null;
}
List results = new ArrayList<>();
List stack = new ArrayList<>();
int len = 0;
BTree cur = bTree;
BTree last = null;
stack.add(cur);
while((len = stack.size()) > 0) {
cur = stack.get(len - 1);
boolean isLeaf = cur.left == null && cur.right == null;
boolean isVisited = (cur.right == null && cur.left == last) || cur.right == last;
if (isLeaf || isVisited) {
stack.remove(len - 1);
results.add(cur.value);
last = cur;
} else {
if (cur.right != null) {
stack.add(cur.right);
}
if (cur.left != null) {
stack.add(cur.left);
}
}
}
return results;
}
层次遍历
这个也没啥好说的,通过队列先进先出的特性进行广度遍历, 注意先出队
public static List levelTraversal(BTree bTree) {
if (bTree == null) {
return null;
}
List queue = new LinkedList<>();
List results = new ArrayList<>();
BTree cur = bTree;
int len = 0;
queue.add(cur);
while((len = queue.size()) > 0) {
cur = queue.remove(0);
if (cur.left != null) {
queue.add(cur.left);
}
if (cur.right != null) {
queue.add(cur.right);
}
results.add(cur.value);
}
return results;
}
转:http://stackoverflow.com/questions/18145774/eclipse-an-error-occurred-while-filtering-resources
maven报错:
maven An error occurred while filtering resources
Maven -> Update Proje
在SVN服务控制台打开资源库“SVN无法读取current” ---摘自网络 写道 SVN无法读取current修复方法 Can't read file : End of file found
文件:repository/db/txn_current、repository/db/current
其中current记录当前最新版本号,txn_current记录版本库中版本