赞
踩
因为二叉树前序遍历的结果是有序的。所以,我们可以利用一个线性表【顺序表】来存储 前序遍历的路径。之后在通过 线性表 一次读取两个节点(prev 和 cur,cur 是 prev的前序遍历的后一个节点。【在下一次读取的时候,其中一个节点是上回调用的,用于链接】)的信息,修改树节点左右孩子指针的指向即可【prev.left = null; prev.right = cur;】。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public void flatten(TreeNode root) { List<TreeNode> list = new ArrayList<>(); preorderTraversal(list,root); int size = list.size(); // 一次读取两个节点,修改左右孩子指针的指向(其中一个节点上回调用的,用于链接) for(int i = 1; i < size;i++){ TreeNode prev = list.get(i - 1),cur = list.get(i); prev.left = null; prev.right = cur; } } // 将前序遍历的路径存储到 线性表 list 中 private void preorderTraversal(List<TreeNode> list,TreeNode root){ if(root==null){ return; } list.add(root); preorderTraversal(list,root.left); preorderTraversal(list,root.right); } }
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。