Java实现——根据先序遍历和中序遍历,确定二叉树

来源:互联网 发布:广东11选5遗漏360数据 编辑:程序博客网 时间:2024/06/05 05:40

转自《Java程序员面试笔试宝典》(何昊等编著,机械工业出版社)

根据先序遍历和中序遍历,确定二叉树后,可以给出后序遍历或层序遍历。

public int findIndexInArray(int[] array , int data , int begin , int end){for(int i = begin ; i <= end ; i++){if(data == array[i]){return i;}}return -1;}public void initTree(int[] preOrder , int[] inOrder){root = initTree(preOrder , 0 , preOrder.length - 1 , inOrder , 0 , inOrder.length - 1);}public Node initTree(int[] preOrder , int start1 , int end1 , int[] inOrder , int start2 , int end2){if(start1 > end1 || start2 > end2){return null;}int rootData = preOrder[start1];Node head = new Node(rootData);int rootIndex = findIndexInArray(inOrder , rootData , start2 , end2);int offSet = rootIndex - start2 - 1;//构建左子树Node left = initTree(preOrder , start1 + 1 , start1 + 1 + offSet , inOrder , start2 , start2 + offSet);Node right = initTree(preOrder , start1 + 2 + offSet , end1 , inOrder , start2 + offSet + 2 , end2);head.left = left;head.right = right;return head;}


阅读全文
0 0
原创粉丝点击