zoukankan      html  css  js  c++  java
  • 二叉树的下一个结点

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M

    题目描述

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

    思路:

    中序遍历:左中右,分析二叉树的下一个结点,一种有以下几种情况:

    1. 二叉树为空,则返回空
    2. 若存在节点右孩子,则设置一指针从该节点的右孩子出发,一直到沿着左子节点找到叶子节点即为下一个节点
    3. 若该节点不是根节点。如果该节点是其父节点的左孩子,则返回父节点;否则继续向上遍历其父节点,重复之前的判断,返回结果。
    /*
    struct TreeLinkNode {
        int val;
        struct TreeLinkNode *left;
        struct TreeLinkNode *right;
        struct TreeLinkNode *next;
        TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {
            
        }
    };
    */
    class Solution {
    public:
        TreeLinkNode* GetNext(TreeLinkNode* pNode)
        {
            if(pNode == NULL)
                return NULL;
            if(pNode->right != NULL)
            {
                pNode = pNode->right;
                while(pNode->left)
                    pNode = pNode->left;
                return pNode;
            }
            while(pNode->next)
            {
                TreeLinkNode *pRoot = pNode->next;
                if(pRoot->left == pNode)
                    return pRoot;
                pNode = pNode->next;
            }
            return NULL;
        }
    };
    
  • 相关阅读:
    aspnet_UsersInRoles_FindUsersInRole
    aspnet_Roles_CreateRole
    aspnet_Users_CreateUser
    aspnet_UsersInRoles_IsUserInRole
    aspnet_Profile_GetProfiles
    aspnet_Profile_GetProperties////aspnet_Profile_SetProperties
    aspnet_Roles_GetAllRoles///aspnet_Roles_RoleExists
    面币思过
    aspnet_Roles_DeleteRole
    aspnet_UsersInRoles_AddUsersToRoles
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12686448.html
Copyright © 2011-2022 走看看