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面试:重建二叉树题目的主要内容,如果未能解决你的问题,请参考以下文章

面试题:重建二叉树

剑指offer-面试题7-重建二叉树-二叉树

剑指Offer:面试题07.重建二叉树

剑指Offer——面试题7:重建二叉树

剑指offer 面试题7.重建二叉树

面试题07. 根据前序和中序重建二叉树