博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode:populating_next_right_pointers_in_each_node题解
阅读量:7246 次
发布时间:2019-06-29

本文共 2189 字,大约阅读时间需要 7 分钟。

一、     题目

对于结构体:struct TreeLinkNode {

             TreeLinkNode *left;

             TreeLinkNode *right;

             TreeLinkNode *next;

           }

填充全部的结点假设存在右側的节点。则指上(next)右节点。假设没有右側的节点。那么就指上NULL,最初都指上NULL。

 提示:仅仅能使用给定的空间,而且你能够觉得给定的二叉树是一个完美的二叉树。

比如:

         1

       / \

      2   3

     / \   \

    4  5    7

处理后:

         1 -> NULL

       / \

      2 -> 3 -> NULL

     / \   \

    4-> 5 -> 7 -> NULL

二、     分析

1、         空节点就直接返回

2、         左节点非空则连接右节点

3、         子节点连接兄弟节点的子节点。则root.right.next = root.next.left;

 

 

/** * Definition for binary tree with next pointer-> * struct TreeLinkNode { *  int val; *  TreeLinkNode *left, *right, *next; *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {} * }; */class Solution {public:    void connect(TreeLinkNode *root) {        if(root==NULL) return;        if(root->left!=NULL) root->left->next=root->right;        if(root->right!=NULL&&root->next!=NULL)        	root->right->next=root->next->left;        	        connect(root->left);        connect(root->right);    }};BFS/** * Definition for binary tree with next pointer. * struct TreeLinkNode { *  int val; *  TreeLinkNode *left, *right, *next; *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {} * }; */class Solution {public:    void connect(TreeLinkNode *root) {        // Note: The Solution object is instantiated only once and is reused by each test case.        //breadth-first traversal        queue
bfsq; int levelCnt=0; int level2=0; if(root==NULL) return; bfsq.push(root); levelCnt++; TreeLinkNode *prevList=NULL; TreeLinkNode *topS=NULL; while(!bfsq.empty()) { topS=bfsq.front(); bfsq.pop(); levelCnt--; if(topS->left!=NULL && topS->right!=NULL) { bfsq.push(topS->left); level2++; bfsq.push(topS->right); level2++; } if(prevList!=NULL) prevList->next=topS; prevList=topS; if(levelCnt==0) { levelCnt=level2; level2=0; prevList=NULL; } } }};

 

 

转载于:https://www.cnblogs.com/yutingliuyl/p/6993270.html

你可能感兴趣的文章
Python 列表和元组
查看>>
Python 条件 循环 及其他语句
查看>>
nuxt跨域
查看>>
第六天个人总结
查看>>
Vagrant工具的安装
查看>>
JavaEE(八)
查看>>
(转载)三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较
查看>>
CSS3之column
查看>>
The content of element type "struts-config" must match "(display-name?,descr
查看>>
last 命令
查看>>
输出元素n的所有组合数
查看>>
java学习------异常
查看>>
Android - Activity定制横屏(landscape)显示
查看>>
JavaScript提高:005:ASP.NET使用easyUI TABS标签显示问题
查看>>
ELK
查看>>
程序员们、PD们,你敢这样在家办公吗?
查看>>
shader 例子学习
查看>>
hive优化分享
查看>>
java中Action层、Service层和Dao层的功能区分
查看>>
命令模式
查看>>