zoukankan      html  css  js  c++  java
  • 微软面试题:补充题12. 二叉树的下一个节点 出现次数:2

    题目描述:

           某种二叉树的节点包含指向 左子树、右子树、父节点的 3 个指针,给定该二叉树中的某个节点 ,

    返回它的中序遍历的下一个节点的指针。

    分析:

    节点(设为x)  中序遍历的下一个节点有以下可能:

    1.  若x有右子树。则x的下一个节点为x右子树最左侧节点。如,2的下一个节点为8。

    2.  若x没有右子树,又分为2种情况。

        2.1  若x是父节点的左孩子。则x的父节点就是x的下一个节点。如,7的下一个节点是4。

        2.2  若x是父节点的右孩子。则沿着父节点向上,直到找到一个节点的父节点的左孩子

               是该节点,则该节点的父节点就是x的下一个节点。如,9的下一个节点是1。

    在上溯 的过程中如果到了 根节点仍然 没有找到目标节点,则返回 NULL。

    代码:

      

     1 /*
     2 struct TreeLinkNode {
     3     int val;
     4     struct TreeLinkNode *left;
     5     struct TreeLinkNode *right;
     6     struct TreeLinkNode *next;
     7     TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {
     8         
     9     }
    10 };
    11 */
    12 class Solution {
    13 public:
    14     TreeLinkNode* GetNext(TreeLinkNode* pNode)
    15     {
    16         if(pNode == NULL)
    17         {
    18             return NULL;
    19         }
    20         if(pNode->right != NULL)
    21         {
    22             TreeLinkNode* ptr = pNode->right;
    23             TreeLinkNode* front = ptr;
    24             while(ptr != NULL)
    25             {
    26                 front  = ptr;
    27                 ptr = ptr->left;
    28             }
    29             return front;
    30         }
    31         else if(pNode->next == NULL || pNode->next->left == pNode)
    32         {
    33             return pNode->next;
    34         }
    35         else
    36         {
    37             while(pNode->next != NULL && pNode == pNode->next->right)
    38             {
    39                 pNode  = pNode->next;
    40             }
    41             return pNode->next;
    42         }
    43     }
    44 };
  • 相关阅读:
    POJ 1887 Testing the CATCHER
    HDU 3374 String Problem
    HDU 2609 How many
    POJ 1509 Glass Beads
    POJ 1458 Common Subsequence
    POJ 1159 Palindrome
    POJ 1056 IMMEDIATE DECODABILITY
    POJ 3080 Blue Jeans
    POJ 1200 Crazy Search
    软件体系结构的艺术阅读笔记1
  • 原文地址:https://www.cnblogs.com/wangxf2019/p/14666289.html
Copyright © 2011-2022 走看看