首页 > 其他分享 >二叉树

二叉树

时间:2023-11-23 14:44:58浏览次数:29  
标签:int ml s1 二叉树 root fl

二叉树的遍历

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=150;
int parent[N];
int child[N][2];
void dfs1(int u){
	cout<<u<<' ';
	if(child[u][0]) dfs1(child[u][0]);
	if(child[u][1]) dfs1(child[u][1]);
}
void dfs2(int u){
	
	if(child[u][0]) dfs2(child[u][0]);
	cout<<u<<' ';
	if(child[u][1]) dfs2(child[u][1]);
}
void dfs3(int u){
	
	if(child[u][0]) dfs3(child[u][0]);
	if(child[u][1]) dfs3(child[u][1]);
	cout<<u<<' ';
}

int main(){
	int n;
	cin>>n;
	int S;
	cin>>S;
	for(int i=1;i<n;i++){
		int b,d;
		char c;
		cin>>b>>c>>d;
		if(c=='L') child[b][0]=d;
		else child[b][1]=d;
	}
	dfs1(S);
	cout<<'\n';
	dfs2(S);
	cout<<'\n';
	dfs3(S);
	return 0;
}

问题 B: 二叉树重构

点击查看代码
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
//先序 起点 终点  中序 起点 终点 
void dfs(string first,int fl,int fr,string mid,int ml,int mr){
	if(ml>mr) return;
	int root=mid.find(first[fl]);
	dfs(first,fl+1,fl+root-ml,mid,ml,root-1);
	dfs(first,fl+root-ml+1,fr,mid,root+1,mr);
	cout<<first[fl];
}


int main(){
	cin>>s1>>s2;
	int n=s1.length();
	dfs(s1,0,n-1,s2,0,n-1);
	return 0;
}

标签:int,ml,s1,二叉树,root,fl
From: https://www.cnblogs.com/bu-fan/p/17851507.html

相关文章

  • LeetCode之二叉树
    发现新天地,欢迎访问Cr不是铬的个人网站平衡二叉树做这一道题目我们要考虑到平衡二叉树的定义。也就是一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。关于一个结点的高度计算我们很容易用递归得出,那么我们用递归遍历加上这个判断条件即可.classSolution{pu......
  • 数据结构之二叉树的遍历3(java)
    一:概述绝大多数的可以用递归解决问题,也可以使用另一种数据结构来解决,这种数据结构就是栈。因为递归和栈都有回溯的特性。二:具体说明如何借助栈来实现二叉树的遍历,下面以二叉树的前序遍历为例,来阐述具体过程。<1>首先遍历二叉树的根节点1,放入栈中。<2>遍历根节点1的左孩子节点2,放入......
  • [LeetCode] 1361. Validate Binary Tree Nodes 验证二叉树
    Youhave n binarytreenodesnumberedfrom 0 to n-1 wherenode i hastwochildren leftChild[i] and rightChild[i],return true ifandonlyif all thegivennodesform exactlyone validbinarytree.Ifnode i hasnoleftchildthen leftCh......
  • 构建二叉树
    构建二叉树本文图文并茂讲解从前序遍历、中序续遍历构建二叉树或者从后序遍历、中序续遍历又或者从前序遍历、后序续遍历构建二叉树的原理,比附上相关的习题。图解链接:飞书图解链接......
  • 变长子网划分问题的二叉树解法
    计网的变长子网划分、计组的变长操作码划分、数据结构的哈夫曼编码,都是前缀编码的本质(变长操作码的二叉树解法我还在琢磨中)【二叉树解法】每条从叶结点到根节点的路径上有且只有一个被分配的结点:【例】现将一个IP网络划分成4个子网,若其中一个子网是172.16.1.128/26,则下列网络中......
  • 数据结构之二叉树的遍历2(java)
    一:概述二叉树的深度遍历3种方式:前序遍历、中序遍历、后序遍历。下面是具体的这三种方式的遍历代码。二:具体概述用递归的方式实现前序遍历、中序遍历、后序遍历。publicclassTreeNodeTraveral{/***构建二叉树**@paraminputList输入序列*/......
  • 代码随想训练营第三十七天(Python)| 738.单调递增的数字、968.监控二叉树
    738.单调递增的数字classSolution:defmonotoneIncreasingDigits(self,n:int)->int:#主要思路当前数字比前面数字小时。前面数字-1,当前数字变2为9str_n=str(n)foriinrange(len(str_n)-1,0,-1):ifstr_n[i]<str_n[......
  • 06_二叉树的右视图
    二叉树的右视图给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例1:输入:[1,2,3,null,5,null,4]输出:[1,3,4]示例2:输入:[1,null,3]输出:[1,3]示例3:输入:[]输出:[]提示:二叉树的节点个数的范......
  • 二叉树的遍历
    先序遍历非递归算法1classSolution{public:vector<int>preorderTraversal(TreeNode*root){stack<TreeNode*>st;vector<int>result;if(root==NULL)returnresult;st.push(root);while(!st.empty())......
  • 二叉树
    #include<stdio.h>#include<stdlib.h>//二叉树节点的定义typedefstructTreeNode{intdata;structTreeNode*left;structTreeNode*right;}TreeNode;//创建新节点TreeNode*createNode(intdata){TreeNode*newNode=(TreeNode*)malloc......