首页 > 其他分享 >搜索二叉树转换成双向链表

搜索二叉树转换成双向链表

时间:2023-04-09 21:24:20浏览次数:38  
标签:pre 转换成 pRoot 链表 二叉树 null 节点

搜索二叉树:每个节点的左子树的值都小于当前节点,右子树的节点值都大于当前节点。其中序遍历就是一个有序的序列

转化成双向链表,需要记录一下头节点,和前一个节点,将前一个节点和当前节点相连

pre

head

convert(pRoot){

  if(pRoot == null)return null;

  convert(pRoot.left);

  if(pre = null){

    pre = pRoot;

    head = pRoot;

  }else{

    pre.right = pRoot;

    pRoot.left = pre;

    pre = pRoot;

  }

  convert(pRoot.right);

  return head;

}

标签:pre,转换成,pRoot,链表,二叉树,null,节点
From: https://www.cnblogs.com/materialdog/p/17301086.html

相关文章

  • 二叉树的最大深度,二叉树是否存在路径和为某值的路径
    递归的方法遍历二叉树最大深度:fun(root){if(root==null){ return0;}return(Max(fun(root.left),fun(root.right))+1);}和为某值fun(root,sum){if(root==null){returnfalse;}if(root.left==null&&root.right......
  • 二叉树层序遍历和之字遍历
    1.用一个队列记录当前层的节点,然后一个个取出,取出的同时将取出节点的儿子节点加入到队列中。2.之字遍历则需要一个标志为将行进行翻转ArrayList<Integer>(ArrayList<Integer>())res;flag=true;//实现奇数行翻转,偶数行不翻转Queuetemp;temp.offer(head)while(temp!=nul......
  • 判断完全二叉树
    1.题目链接天梯赛真题--是否是完全二叉搜索树2.根据节点编号判断(better)借鉴自这里规定根节点的编号为\(1\),左孩子节点编号为\(left\),右孩子节点编号为\(right\),父节点的节点编号为\(fa\),则有:\(left=fa<<1\)\(right=fa<<1|1\)由于完全二叉树的节点编号......
  • 14.6二叉树的层序遍历实战
    function.h////Createdby93757on2023/3/21.//#ifndefINC_1_TREE_FUNCTION_H#defineINC_1_TREE_FUNCTION_H#include<stdio.h>#include<stdlib.h>typedefcharBiElemType;typedefstructBiTNode{BiElemTypec;//c就是书籍上的datastru......
  • 二叉树前序中序后序遍历实战
    function函数////Createdby93757on2023/3/21.//#ifndefINC_1_TREE_FUNCTION_H#defineINC_1_TREE_FUNCTION_H#include<stdio.h>#include<stdlib.h>typedefcharBiElemType;typedefstructBiTNode{BiElemTypec;//c就是书籍上的datastru......
  • 14.4二叉树层次建树
    创建function函数////Createdby93757on2023/3/21.//#ifndefINC_1_TREE_FUNCTION_H#defineINC_1_TREE_FUNCTION_H#include<stdio.h>#include<stdlib.h>typedefcharBiElemType;typedefstructBiTNode{BiElemTypec;//c就是书籍上的datast......
  • 剑指 Offer 36. 二叉搜索树与双向链表
    题目链接:剑指Offer36.二叉搜索树与双向链表方法一:回溯解题思路代码classSolution{private:intmx=INT_MIN,mi=INT_MAX;Node*start=NULL,*end=NULL;public:voidLrotate(Node*root,Node*last_root){//针对左子树,左旋if(!ro......
  • 剑指 Offer 37. 序列化二叉树
    题目链接:剑指Offer37.序列化二叉树取巧做法classCodec{private:TreeNode*root;public://Encodesatreetoasinglestring.stringserialize(TreeNode*root){this->root=root;return"";}//Decodesyourencoded......
  • PAT Basic 1075. 链表元素分类
    PATBasic1075.链表元素分类1.题目描述:给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0,K]区间内的元素都排在大于K的元素前面。但每一类内部元素的顺序是不能改变的。例如:给定链表为18→7→-4→0→5→-6→10→11→-2,K为......
  • 链表中的节点每k个一组翻转
    classSolution{publicListNodereverseKGroup(ListNodehead,intk){ListNodedummy=newListNode(0);//定义虚拟节点dummy.next=head;ListNodeprev=dummy;//定义一个前置节点prev,用于保存已经翻转完成的部分的尾部节点......