将二叉树的叶子结点转换成单链表,并返回最左叶子结点的地址(链头)
来源:互联网 发布:网易云课堂mac电脑版 编辑:程序博客网 时间:2024/04/30 02:42
已知二叉树的链表存储结构定义为如下:
typedef struct BinTNode
{
int data;
BinTNode *lchild;
BinTNode *rchild;
BinTNode(int elemet = 0, BinTNode *left = NULL, BinTNode *right = NULL)
:data(elemet), lchild(left), rchild(right){}
}BinTNode;
编写一个递归算法,利用叶子结点中空的 右连接指针域rchild,将所有叶子结点自左向右链接成一个单链表,算法返回最左叶子结点的地址(链头)。
算法分析:可以根据二叉树的先序遍历的方法,“根左右”!
#include "stdafx.h"#include <iostream>using namespace std;typedef struct BinTNode{int data;BinTNode *lchild;BinTNode *rchild;BinTNode(int elemet = 0, BinTNode *left = NULL, BinTNode *right = NULL):data(elemet), lchild(left), rchild(right){}}BinTNode;//递归创建二叉树BinTNode *CreateBinTree(int arr[], int begin, int end){BinTNode *root = NULL;if (begin >= end)return root;root = new BinTNode(arr[begin]);root->lchild = CreateBinTree(arr, begin * 2 + 1, end);root->rchild = CreateBinTree(arr, begin * 2 + 2, end);return root;}//函数功能:递归,利用叶子结点中空的右指针域rchild,//将所有叶子结点自左向右连接成一个单链表,返回最左叶子结点的地址BinTNode *head = NULL;BinTNode *temp = NULL;void ChangleToSingleList(BinTNode *root){if (NULL == root)//树为空return ;//叶子结点if (root->lchild == NULL && root->rchild == NULL){if(NULL == temp){temp = head = root;}else{temp->rchild = root;temp = root;}}ChangleToSingleList(root->lchild);//左子树ChangleToSingleList(root->rchild);//右子树}int main(){const int N = 10;int arr[N];for (int i = 0; i < N; i++)arr[i] = i + 1;BinTNode *root = CreateBinTree(arr, 0, N);ChangleToSingleList(root);while (head != NULL){cout<<head->data<<" ";head = head->rchild;}cout<<endl;}
- 将二叉树的叶子结点转换成单链表,并返回最左叶子结点的地址(链头)
- 将二叉树的叶子结点转换成单链表,并返回最左叶子结点的地址(链头)
- 求二叉树的叶子结点数
- c++输出二叉树叶子结点并输出叶子结点到根结点的路径长度
- 删除二叉树中度为0的结点(即叶子结点)
- 二叉树 (求叶子结点&深度)
- 二叉树(求深度、叶子结点)
- 打印二叉树根结点到所有叶子结点的路径
- DS之求解二叉树的叶子结点和深度
- 求二叉树的深度、宽度和叶子结点数
- 求二叉树的叶子结点个数及深度
- 7-1 求二叉树的叶子结点个数
- 求树的叶子结点的个数
- 查询树的所有叶子结点
- 判断叶子结点的个数
- !求二叉树中从根结点到叶子结点的路径
- 输出二叉树中所有从根结点到叶子结点的路径
- 输出二叉树中所有从根结点到叶子结点的路径
- D-Bus学习
- 线程的交互
- 自定义Toast
- Ubuntu开启SSH服务
- FreeBSD 用BASH 的/etc/bashrc 文件
- 将二叉树的叶子结点转换成单链表,并返回最左叶子结点的地址(链头)
- 正则表达式详解
- 拷贝项目时的注意事项
- JAVA Dynamic Proxy
- 内核初始化优化宏
- 2011-9-7多线程
- SQL清除某个数据库的所有数据库连接
- hibernate find By Example, it will use all field
- wireshark过滤器规则