如何搜索二叉树转换为双向链表
来源:互联网 发布:java垃圾回收机制 英文 编辑:程序博客网 时间:2024/05/29 09:57
public static class Node{public int value;public Node left;public Node right;public Node(int data){this.value = data;}}public static Node convert1(Node head){Queue<Node> queue = new LinkedList<Node>();inOrderToQueue(head, queue);if(queue.isEmpty()){return head;}head = queue.poll();Node pre = head;pre.left = null;Node cur = null;while(!queue.isEmpty()){cur = queue.poll();pre.right = cur;cur.left = pre;pre = cur;}pre.right = null;return head;}public static void inOrderToQueue(Node head, Queue<Node> queue){if(head == null){return;}inOrderToQueue(head.left, queue);queue.offer(head);inOrderToQueue(head.right, queue);}public static Node convert2(Node head){if(head == null){return null;}Node last = process(head);head = last.right;last.right = null;return head;}public static Node process(Node head){if(head == null){return null;}Node leftE = process(head.left);//left endNode rightE = process(head.right);//right endNode leftS = leftE != null ? leftE.right : null;//left startNode rightS == rightS != null ? rightE.right : null; //right startif(leftE != null && rightE != null){leftE.right = head;head.left = leftE;head.right = rightS;rightS.left = head;rightE.right = leftS;return rightE;}else if(leftE != null){leftE.right = head;head.left = leftE;head.right = leftS;return head;}else if(rightE != null){head.right = rightS;rightS.left = head;rightE.right = head;return rightE;}else{head.right = head;return head;}}
阅读全文
0 0
- 如何搜索二叉树转换为双向链表
- 二叉搜索树转换为双向链表
- diary5(二叉搜索树转换为双向链表)
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- java之二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为有序双向链表
- 将二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 搜索二叉树转换为双向链表
- 平衡二叉搜索树BST转换为双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 将二叉搜索树转换为双向链表
- 嵌入式入门计划
- HDU 2037
- 两个单链表相交的一系列问题
- C++学习笔记(一)
- 使用wampserver搭建阿里云服务器
- 如何搜索二叉树转换为双向链表
- 一个div中文字居中的方法
- cannot open shared object file
- Construct String from Binary Tree
- 利用KMP算法判断一个树是否是另一个树的子树
- Hessian源码剖析(二)
- Qt实现基于P2P的局域网即时通信系统
- 基于opencv3.2.0版本FindContours()中method参数导致程序异常解决
- 第一条博客_程序员之路加油