二叉樹相關演算法(Java)

2021-09-19 10:52:07 字數 2089 閱讀 8748

二叉樹的非遞迴遍歷

其他相關演算法

輸入一顆二叉樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點(含根,葉子結點)形成一條路徑,最長路徑的長度為樹的深度

public int treedepth(treenode root) 

int left = treedepth(root.left);

int right = treedepth(root.right);

return left>right?left+1:right+1;

}

若二叉樹中任意節點的左右子樹的深度相差不超過1,則為平衡二叉樹

public static int treedepth(treenode root) 

int left = treedepth(root.left);

int right = treedepth(root.right);

return left>right?left+1:right+1;

}private static boolean isbalanced(treenode root)

int left = treedepth(root.left);

int right = treedepth(root.right);

int diff = math.abs(left - right);

if(diff>1)

return isbalanced(root.left)&&isbalanced(root.right);

}

private static int lastvisit = integer.min_value;

public boolean isbst(treenode root)else

boolean judgeright = isbst(root.right);

return judgeright;

}

public boolean iscompletetree(treenode root)

queue.offer(node.left);

}else

if(node.right != null)

queue.offer(node.right);

}else

}return true;

}

public void preorder(treenode root)

if (!stack.isempty())

}}

public void inorder(treenode root)

//當node為空時,說明已經遍歷到了最左葉子節點,開始出棧

if (!stack.isempty())

}}

public void postorder(treenode root)else 

}while (!output.isempty())

}

public treenode lowestcommonancestor(treenode root, treenode p, treenode q) 

return left == null ? right : left;

}

距離分為兩種情況:

1.兩節點分別在左右子樹,則最遠距離為左子樹深度+1+右子樹深度

2.兩節點在同一子樹上,取左子樹和右子樹深度較大的

public static int maxwidth(treenode root)

queuequeue = new arraydeque<>();

int max = 1;

queue.add(root);

while(true)

while(len > 0)

if(t.right != null)

}max=math.max(max,queue.size());

}return max;

}

二叉樹相關演算法

節點 class node t public node t left public node t right public node t value,node t left,node t right public node t value this value,null null 二叉樹 前中後深度...

二叉樹相關演算法 二

leetcode 437.path sum iii 第乙個想法就是遍歷二叉樹,找出每個節點的可能性。這個思路時間複雜度為o n 2 private int num public intpathsum treenode root,int sum private void recur treenode ...

Java 二叉樹演算法

二叉樹演算法的排序規則 1 選擇第乙個元素作為根節點 2 之後如果元素大於根節點放在右子樹,如果元素小於根節點,則放在左子樹 3 最後按照中序遍歷的方式進行輸出,則可以得到排序的結果 左 根 右 二叉樹演算法的核心類,此類只提供了新增和列印輸出的方法 package com.lym.binarytr...