欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java根據前序和中序建樹

李佳璐1年前7瀏覽0評論

Java是一門廣泛應用于軟件開發行業的編程語言,常常用來解決問題或實現功能。在Java中,我們可以通過已知二叉樹前序和中序遍歷結果,來重建這棵二叉樹。以下是實現的方法。

public class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
if (preorder == null || inorder == null || preorder.length != inorder.length) {
return null;
}
return buildTree(preorder, 0, inorder, 0, inorder.length - 1);
}
public TreeNode buildTree(int[] preorder, int preStart, int[] inorder, int inStart, int inEnd) {
if (preStart >preorder.length - 1 || inStart >inEnd) {
return null;
}
int rootVal = preorder[preStart];
TreeNode root = new TreeNode(rootVal);
int inIndex = 0;
for (int i = inStart; i<= inEnd; i++) {
if (inorder[i] == rootVal) {
inIndex = i;
}
}
root.left = buildTree(preorder, preStart + 1, inorder, inStart, inIndex - 1);
root.right = buildTree(preorder, preStart + inIndex - inStart + 1, inorder, inIndex + 1, inEnd);
return root;
}
}

以上代碼中,我們使用了遞歸的方式來遍歷前序遍歷數組以及中序遍歷數組,并重建了樹結構。

在這個方法中,我們需要輸入前序遍歷數組以及中序遍歷數組,再利用遞歸的方式重建這棵二叉樹。

首先,我們需要對代碼所需的數據進行判斷,檢查傳入的數組是否空或長度不相等。如果為空或長度不相等,函數返回null值。

接下來,我們創建一個TreeNode節點并保存它的根節點值。

我們需要根據中序遍歷數組找到左子樹和右子樹的節點。當我們找到根節點的位置時,偏移量用于確定左、右子樹的長度。通過左子樹的長度和中序遍歷數組可以創建左子樹,通過右子樹的長度和中序遍歷數組可以創建右子樹以及根節點。

最后,返回根節點。