前の順序、中の順序、後の順序、段階を熟知してアルゴリズムを遍歴します.
4703 ワード
前の順序を巡回する
Que行列 offer()添加要素 pollは、最初の要素を返し、 をキューから削除する. peek()は第一の要素を返し、 を削除しない. add()とremove()、element()の方法は失敗した時に異常を投げます.
リストor配列
①
public static List res = new ArrayList<>();
public static List binaryTreePreOrderByRecursion(TreeNode treeNode) {
if (treeNode == null) {
return res;
}
preOrder(treeNode);
return res;
}
public static void preOrder(TreeNode node) {
if (node == null) {
return;
}
res.add(node.val);
preOrder(node.left);
preOrder(node.right);
}
②
public static List binaryTreePreOrderByStack(TreeNode treeNode) {
List res = new ArrayList<>();
Stack stack = new Stack<>();
if (treeNode == null) {
return res;
}
stack.push(treeNode);
while (!stack.isEmpty()) {
TreeNode cur = stack.pop();
res.add(cur.val);
if (cur.right != null) {
stack.push(cur.right);
}
if (cur.left != null) {
stack.push(cur.left);
}
}
return res;
}
センターフォワード①
public static List resInOrder = new ArrayList<>();
public static List binaryTreeInOrderByRecursion(TreeNode node){
if (node == null){
return resInOrder;
}
processInorder(node);
return resInOrder;
}
public static void processInorder(TreeNode node){
if (node == null){
return;
}
processInorder(node.left);
resInOrder.add(node.val);
processInorder(node.right);
}
②
public static List binaryTreeInOrderByUnRecursion(TreeNode node) {
List res = new ArrayList<>();
Stack stack = new Stack<>();
if (node == null) {
return res;
}
//
while (node != null) {
stack.push(node);
node = node.left;
}
while (!stack.isEmpty()) {
// +
TreeNode cur = stack.pop();
res.add(cur.val);
//
if (cur.right != null){
cur = cur.right;
// ,
while (cur != null){
stack.push(cur);
cur = cur.left;
}
}
}
return res;
}
巡回
static List resPost = new ArrayList<>();
public static List binaryTreePostOrderByRecursion(TreeNode node) {
if (node == null) {
return resPost;
}
processPost(node);
return resPost;
}
public static void processPost(TreeNode node) {
if (node == null) {
return;
}
processPost(node.left);
processPost(node.right);
resPost.add(node.val);
}
public static List binaryTreePostOrderByUnRecursion(TreeNode node) {
Stack stack = new Stack<>();
List res = new ArrayList<>();
if (node == null) {
return res;
}
//
stack.push(node);
//
while (!stack.isEmpty()) {
TreeNode cur = stack.pop();
res.add(cur.val);
if (cur.left != null) {
//
stack.push(cur.left);
}
if (cur.right != null) {
//
stack.push(cur.right);
}
}
// ,
Collections.reverse(res);
return res;
}
巡回Que行列
リストor配列
public ArrayList PrintFromTopToBottom(TreeNode root) {
ArrayList result = new ArrayList();
if(root == null){
return result;
}
ArrayList treeNode = new ArrayList();
treeNode.add(root);
for(int i=0; i
キューimport java.util.*;
public ArrayList PrintFromTopToBottom(TreeNode root) {
ArrayList result = new ArrayList();
if(root == null){
return result;
}
Queue queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
result.add(node.val);
if(node.left!=null){
queue.offer(node.left);
}
if(node.right!=null){
queue.offer(node.right);
}
}
return result;
}