首页 > 其他分享 >JZ36二叉树排序树与双向链表

JZ36二叉树排序树与双向链表

时间:2024-04-18 22:13:00浏览次数:24  
标签:pre pRootOfTree right TreeNode JZ36 链表 二叉树 ans InOrder

image
image

image
image

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
#include <cstddef>
class Solution {
public:

	TreeNode* ans = nullptr;	//最终的链表
	TreeNode* pre = nullptr;	//指向左子树的最大值
    TreeNode* Convert(TreeNode* pRootOfTree) {
        //要求:不能创建任何新的节点,只能调整树中节点的指向
		//中序遍历是一个有序序列
		//中序序列遍历,左根右
		InOrder(pRootOfTree);
		return ans;
	
    }

	void InOrder(TreeNode* pRootOfTree)
	{
		if(!pRootOfTree) return ;
		InOrder(pRootOfTree->left);

		if(ans==NULL)	
		{
			ans = pRootOfTree;  //递归到最后,ans指向的是最小的那个节点
			pre = pRootOfTree;
		}
		else {
			pre->right = pRootOfTree;
			pRootOfTree->left = pre;
			pre = pRootOfTree;
		}

		InOrder(pRootOfTree->right);
	}
};

标签:pre,pRootOfTree,right,TreeNode,JZ36,链表,二叉树,ans,InOrder
From: https://www.cnblogs.com/H43724334/p/18144613

相关文章

  • 树1-二叉树概念与遍历方法
    树1:二叉树概念与遍历方法二叉树二叉树的遍历二叉树遍历分为前序,中序,后序.序是指遍历根结点的顺序D-data,根L左R右,先序遍历ABCDE-FGH中序遍历BDCE-A-FHG后序遍历DECB-HGF-A先序遍历ABDH-I-EJCFG中序遍历HDI-B-JEAFCG后序遍历HID-J......
  • 树2-二叉树拷贝, 遍历, 计算叶子结点和高度
    树2-二叉树拷贝,遍历,计算叶子结点和高度二叉树结点typedefstructBinaryNode{charch;structBinaryNode*lChild;structBinaryNode*rChild;}BinaryNode;//叶子结点的数量intsum;二叉树遍历前序//递归遍历(前序)voidRecursion(BinaryNode*roo......
  • 链表4: 循环链表
    链表4-循环链表循环链表的特点:链表的尾结点后继指向头结点循环链表的结构typedefstructNode{intdata;//数据域structNode*nextNode;//后继}Node;循环链表的初始化Node*initHeader(){//创建头结点Node*header=(Node*)malloc(sizeof(No......
  • LeetCode- 19 删除链表的倒数第N个节点
    题目地址https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/参考实现/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){t......
  • 2024-04-17:用go语言,欢迎各位勇者莅临力扣城,本次的挑战游戏名为「力扣泡泡龙」。 游戏
    2024-04-17:用go语言,欢迎各位勇者莅临力扣城,本次的挑战游戏名为「力扣泡泡龙」。游戏的起点是一颗形状如二叉树的泡泡树,其中每个节点的值代表该泡泡的分值。勇者们有一次机会可以击破一个节点泡泡,但需要满足以下规则:被击破的节点泡泡最多只能有一个子节点泡泡。如果被击破的节点......
  • 链表3: 双链表
    链表3:双链表双链表的结构双链表与单链表最大的不同就是不仅存储了结点的后继,还存储了结点的前驱.创建双链表的数据结构typedefstructNode{structNode*preNode;//前驱intdata;//数据域structNode*nextNode;//后继}Node;双链表初始化//返......
  • 1025 反转链表
    我看其他博客用的reverse,但是下标我真的有点糊涂,以下是参考某位dalao的。#include<bits/stdc++.h>usingnamespacestd;structnode{ intsno; intdata; intnext;}s[100010];intmain(){ intstart,cnt,fz;//start cin>>start>>cnt>>fz; for(inti=0;i<cnt......
  • JZ27 二叉树的镜像
    /***structTreeNode{* intval;* structTreeNode*left;* structTreeNode*right;* TreeNode(intx):val(x),left(nullptr),right(nullptr){}*};*/classSolution{public:/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回......
  • JZ55 二叉树的深度
    /*structTreeNode{ intval; structTreeNode*left; structTreeNode*right; TreeNode(intx): val(x),left(NULL),right(NULL){ }};*/classSolution{public: //采用递归的方法intTreeDepth(TreeNode*pRoot){ //判空 if(pRoot==NULL) ......
  • 说说你对链表的理解?常见的操作有哪些?
    一、是什么链表(LinkedList)是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,由一系列结点(链表中每一个元素称为结点)组成每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域 节点用代码表......