Java面试:重建二叉树题目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试:重建二叉树题目相关的知识,希望对你有一定的参考价值。
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
解答:
public static void main(String[] args)
//前序遍历数
int [] preNode =1,2,4,7,3,5,6,8;
//中序遍历数
int [] infixNode =4,7,2,1,5,3,8,6;
TreeNode treeNode = rebuildTree(preNode, infixNode);
System.out.println(treeNode);
private static TreeNode rebuildTree(int [] preNode,int [] infixNode)
if(null == preNode|| null == infixNode || preNode.length ==0 ||
infixNode.length ==0 || preNode.length != infixNode.length)
return null;
TreeNode treeNode = new TreeNode(preNode[0]);
for(int i =0 ; i < preNode.length ; i++)
treeNode.leftNode= rebuildTree(Arrays.copyOfRange(preNode,1,i+1),Arrays.copyOfRange(infixNode,0,i));
treeNode.rightNode =rebuildTree(Arrays.copyOfRange(preNode,i+1,preNode.length),Arrays.copyOfRange(infixNode,i+1,infixNode.length));
return treeNode;
TreeNode类如下:
public class TreeNode
private int value;
TreeNode leftNode;
TreeNode rightNode;
public TreeNode(int value)
this.value = value;
@Override
public String toString()
return "TreeNode" +
"value=" + value +
", leftNode=" + leftNode +
", rightNode=" + rightNode +
;
以上是关于Java面试:重建二叉树题目的主要内容,如果未能解决你的问题,请参考以下文章