题解 | #二叉树展开为单链表#

二叉树展开为单链表

http://www.nowcoder.com/practice/421a1099535149c0828ad7a6e1ce7b40

import java.util.ArrayList;

public class Solution {

public int number;
public void expandTree (TreeNode root) {
    // write code here
    if(root==null){
        return;
    }
    //计算树节点的个数
    computeTreeNumber(root);
    //初始化
    ArrayList<TreeNode> treeNodeArrayList = new ArrayList<>(number);
    //把节点放入到容器中
    doExpandTree(root,treeNodeArrayList);
    //生成链表树
    TreeNode temp = root;
    temp.left=null;
    for (int i = 1; i < treeNodeArrayList.size(); i++) {
        temp.right=treeNodeArrayList.get(i);
        temp.right.left=null;
        temp=temp.right;
    }
}

public void computeTreeNumber(TreeNode root){
    if(root!=null){
        number++;
    } else {
        return;
    }
    computeTreeNumber(root.left);
    computeTreeNumber(root.right);
}

private void doExpandTree(TreeNode root,ArrayList<TreeNode> treeNodeArrayList) {
    if(root!=null){
        treeNodeArrayList.add(root);
    }else {
        return;
    }
    if(root.left!=null){
        doExpandTree(root.left,treeNodeArrayList);
    }
    if(root.right!=null){
        doExpandTree(root.right,treeNodeArrayList);
    }
}

}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务