这题参考了Code Ganker大牛思路
http://blog.youkuaiyun.com/linhuanmars/article/details/23717703
设置pre结点,每次pre左结点设置为空,右结点设置为当前结点。有一点特别要注意的是Java是pass by value,所以需要用一个单元素的TreeNode数组来储存并且改值。
- ArrayList<TreeNode> pre = new ArrayList<TreeNode>();
- public void flatten(TreeNode root) {
- pre.add(null);
- helper(root);
- }
- private void helper(TreeNode root)
- {
- if(root == null)
- return;
- TreeNode right = root.right;
- if(pre.get(0)!=null)
- {
- pre.get(0).left = null;
- pre.get(0).right = root;
- }
- pre.set(0,root);
- helper(root.left);
- helper(right);
- }
本文介绍了一种将二叉树扁平化的算法实现,通过递归方式将树结构转化为链表形式,并确保每个节点只有右子节点,便于遍历操作。文中详细解释了如何利用辅助数组进行节点连接。

282

被折叠的 条评论
为什么被折叠?



