Populating Next Right Pointers in Each Node II问题及解法

来源:互联网 发布:python 读取 csv 编辑:程序博客网 时间:2024/06/10 00:29

问题描述:

Follow up for problem "Populating Next Right Pointers in Each Node".

What if the given tree could be any binary tree? Would your previous solution still work?

Note:

  • You may only use constant extra space.

示例:
Given the following binary tree,

         1       /  \      2    3     / \    \    4   5    7

After calling your function, the tree should look like:

         1 -> NULL       /  \      2 -> 3 -> NULL     / \    \    4-> 5 -> 7 -> NULL
问题分析:

依次遍历每一层,根据parent节点寻找每个root节点的next值,迭代求解即可。


过程详见代码:

/** * 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) {TreeLinkNode  parent(0);parent.left = root;bl(root, &parent,1);}void bl(TreeLinkNode *root, TreeLinkNode * parent,int dirt){if (root == NULL) return;TreeLinkNode * tp = parent;TreeLinkNode * tr = root;        if (dirt == 1 && tp->right){tr->next = tp->right;tr = tr->next;}while (tp->next &&  tr->next == NULL){if (tp->next->left){tr->next = tp->next->left;tr = tr->next;}if (tp->next->right){tr->next = tp->next->right;tr = tr->next;}tp = tp->next;}bl(root->left, root,1);bl(root->right, root,2);}};


阅读全文
0 0
原创粉丝点击