zoukankan      html  css  js  c++  java
  • [剑指offer] 57. 二叉树的下一个结点

    题目描述

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。、

    思路:

    (1) 若该节点存在右子树:则下一个节点为右子树最左子节点(如图节点 B )

    (2) 若该节点不存在右子树:

      2.1 该节点为父节点的左子节点,则下一个节点为其父节点(如图节点 D )

      2.2 该节点为父节点的右子节点,则沿着父节点向上遍历,知道找到一个节点的父节点的左子节点为该节点,则该节点的父节点的父节点。

    class Solution
    {
      public:
        TreeLinkNode *GetNext(TreeLinkNode *pNode)
        {
            if (pNode->right)
            {
                pNode = pNode->right;
                while (pNode->left)
                    pNode = pNode->left;
                return pNode;
            }
            else if (pNode->next != NULL && pNode == pNode->next->left)
                return pNode->next;
            else if (pNode->next != NULL && pNode == pNode->next->right)
            {
                while (pNode->next != NULL && pNode != pNode->next->left)
                    pNode = pNode->next;
                return pNode->next;
            }
            return pNode->next;
        }
    };
  • 相关阅读:
    初试 Elastic Search
    索引分类
    Nginx
    LINQ入门
    CSS学习
    Keras 安装
    火车进站
    2016年网易笔试编程题2
    Java GC
    linux 安装 mysql
  • 原文地址:https://www.cnblogs.com/ruoh3kou/p/10241630.html
Copyright © 2011-2022 走看看